Я пытаюсь показать класс со списком классов в WPat datagrid.Вложенные коллекции добавить проблемы
У меня есть следующий код XAML:
<Window x:Class="Main.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525"
FlowDirection="RightToLeft">
<Grid>
<DataGrid Height="auto" Width="auto" Name="DaveningTimes" CanUserAddRows="False" AutoGenerateColumns="False">
<DataGrid.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold" Padding="3"/>
</StackPanel>
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=ItemCount}" Margin="8,0,4,0"/>
<TextBlock Text="{Binding Path=Name}" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</DataGrid.GroupStyle>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Alerts}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding AlertTime.time, ValidatesOnExceptions=True, Mode=TwoWay}" Header="זמן" Width="auto"/>
<DataGridTemplateColumn Header="קובץ התראה" MinWidth="300">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<TextBox Text="{Binding AlertProgram, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" IsEnabled="False" Grid.Column="0" x:Name="PathToFile"/>
<Button Content="..." Grid.Column="1" Click="Button_browse_alert_program" />
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding DaveningTime}" Header="זמן תפילה" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding DaveningName}" Header="סוג תפילה" IsReadOnly="True"/>
<DataGridCheckBoxColumn Binding="{Binding ToAlert}" Header="להתריע?" />
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
Код позади:
IList<Davening> prayes;
public ICollectionView prayes_view { get; private set; }
public MainWindow()
{
prayes = getPrayers(getHTMLfromURL()).ToList();
InitializeComponent();
prayes_view = new ListCollectionView(prayes.ToList());
prayes_view.GroupDescriptions.Add(new PropertyGroupDescription("DaveningName"));
prayes_view.CollectionChanged += prayes_view_CollectionChanged;
DaveningTimes.ItemsSource = prayes_view;
}
Где getPrayers(getHTMLfromURL())
получает из Интернета данные я отображающее.
Классы я использую описаны в следующей диаграмме:
Проблема:
Добавление столбцов пользователем в сетке данных, которая находится в строке детали добавляет элементы, но все значения: null
. Кроме того, валидация не работает (нет красного маркера или что-то в этом роде)
Спасибо за совет, но это не отвечает на вопрос. Если вы можете добавить комментарий к нескольким статьям на эту тему ... – elyashiv