#c# #wpf #xaml #mvvm #grouping
#c# #wpf #xaml #mvvm #группировка
Вопрос:
Я получил ListView
<ListView ItemsSource="{Binding Path=ListUsers}" DockPanel.Dock="Bottom" >
<ListView.View>
<GridView>
<GridViewColumn Header="Position" DisplayMemberBinding="{Binding Position}" />
<GridViewColumn Header="Counter" DisplayMemberBinding="{Binding Counter}" />
</GridView>
</ListView.View>
Я сделал ListView.GroupStyle
:
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Expander IsExpanded="True">
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="ReadTime" FontSize="14" Foreground="Silver" FontStyle="Italic" VerticalAlignment="Bottom" />
<TextBlock Text="{Binding ReadTime}" VerticalAlignment="Bottom" />
</StackPanel>
</Expander.Header>
<ItemsPresenter />
</Expander>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
В моем ctor
in ViewModel
мне понравилось это:
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(ListUsers);
PropertyGroupDescription groupDescription = new PropertyGroupDescription("ReadTime");
view.GroupDescriptions.Add(groupDescription);
Как теперь вместо display text "ReadTime"
для каждой группы, display value
из ReadTime?
Ответ №1:
Как теперь вместо отображения текста «ReadTime» для каждой группы отображать значение из ReadTime?
Этого значения нет, поскольку для каждой группы есть заголовок, а группа может содержать несколько значений. Если вы хотите отобразить первое значение в группе, вы можете использовать Items
коллекцию группы:
<TextBlock Text="{Binding Items[0].ReadTime}" VerticalAlignment="Bottom" />
Комментарии:
1. спасибо @mm8, я только что внедрил ваше решение, и это то, что я искал 🙂