Я уже некоторое время пытаюсь сгруппировать данные в своей сетке данных, но безуспешно.В моей ViewModel свойства:
public ObservableCollection<CompetitorModel> Competitors { get; } =
new ObservableCollection<CompetitorModel>();
public CollectionViewSource CompetitorsCollectionView { get; } =
new CollectionViewSource();
И в моем конструкторе:
CompetitorsCollectionView.Source = Competitors;
CompetitorsCollectionView.GroupDescriptions.Add(
new PropertyGroupDescription(nameof(CompetitorModel.Qualification)));
Наконец, моя сетка данных в моем xaml:
<Grid Background="#FFE5E5E5">
<!-- Datagrid Competition -->
<DataGrid x:Name="Datagrid_Competition"
ItemsSource="{Binding CompetitorsCollectionView}"
AutoGenerateColumns="False"
Grid.Column="2"
Grid.Row="3"
HorizontalGridLinesBrush="DarkGray"
VerticalGridLinesBrush="DarkGray"
IsReadOnly="False"
CanUserReorderColumns="False"
CanUserResizeRows="False"
CanUserResizeColumns="True"
CanUserDeleteRows="True"
CanUserAddRows="False">
<!-- Grouping Style -->
<DataGrid.GroupStyle>
<GroupStyle ContainerStyle="{StaticResource GroupHeaderStyle}">
<GroupStyle.Panel>
<ItemsPanelTemplate>
<DataGridRowsPresenter/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</DataGrid.GroupStyle>
<!-- Column Information -->
<DataGrid.Columns>
<DataGridTextColumn Header="Place"
Binding="{Binding Path=Place}"
Width="45"
IsReadOnly="True"/>
<DataGridTextColumn Header="Username"
Binding="{Binding Path=Username}"
Width="120"/>
<DataGridTextColumn Header="VIStart"
Binding="{Binding Path=VIStart}"
Width="Auto"/>
<DataGridTextColumn Header="VIEnd"
Binding="{Binding Path=VIEnd}"
Width="Auto"/>
<DataGridTextColumn Header="VIs"
Binding="{Binding Path=VIs}"
Width="Auto"
IsReadOnly="True"/>
<DataGridTextColumn Header="Time"
Binding="{Binding Path=TimeFormated}"
Width="Auto"
IsReadOnly="True"/>
<DataGridTextColumn Header="Rerecords"
Binding="{Binding Path=Rerecords}"
Width="Auto"/>
<DataGridCheckBoxColumn Header="DQ"
Binding="{Binding Path=DQ}"
Width="30"/>
<DataGridTextColumn Header="DQReason"
Binding="{Binding Path=DQReasons}"
Width="Auto"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
Я пробовалРазнообразие вещей от использования ListCollectionView
s, которые работали, но не предлагали возможности сортировки или полезности в будущем.При этом, мой инструмент выглядит как ListCollectionView
вместо CollectionViewSource
:
Если кто-то может указать, где я ошибся, ябыл бы очень признателен, так как я не могу за всю жизнь решить это.В настоящее время ни одна из других публикаций, которые я могу найти, не решила мою проблему.
Редактировать: я не знаю, важно ли это для решения проблемы, но в моем App.xaml
я определил следующий стильдля моих групп данных:
<!-- Datagrid Grouping Style -->
<Style x:Key="GroupHeaderStyle" TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<Expander x:Name="expander"
IsExpanded="True"
Background="DarkGray"
Foreground="Black"
BorderBrush="DarkGray"
BorderThickness="1.75"
Margin="0,5">
<Expander.Header>
<TextBlock Text="{Binding Name}"/>
</Expander.Header>
<ItemsPresenter/>
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>