Отображать значение в качестве заголовка для группы (XAML, C #)

#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, я только что внедрил ваше решение, и это то, что я искал 🙂