У меня есть ICollectionView с примененным GroupDescription.Я хотел бы отобразить группу в ListView и НЕ отображать членов группы.
Я также хотел бы использовать свойство из ObservableCollection для привязки к BackgroundColor.
Я прикрепилизображение, чтобы помочь уточнить.Красный текст - это правильное имя группы, которое я хочу отобразить.Я также хотел бы привязать BackgroundColor к каждому имени группы (как оно есть в ItemTemplate), и я хотел бы полностью исключить ItemTemplate (что я не могу сделать сейчас без отображения привязки по умолчанию).
C #
private string _WorkOrderDisplayName;
public string WorkOrderDisplayName
{
get { return _WorkOrderDisplayName; }
set { _WorkOrderDisplayName = value; NotifyPropertyChanged("WorkOrderDisplayName"); }
}
private string _BackgroundColor;
public string BackgroundColor
{
get { return _BackgroundColor; }
set
{
_BackgroundColor = value;
NotifyPropertyChanged("BackgroundColor");
}
}
//WorkOrdersICollectionView
WorkOrdersGroupingICollectionView = new CollectionViewSource { Source = AllEstimateItemsForJobObsCollection }.View;
WorkOrdersGroupingICollectionView.GroupDescriptions.Add(new PropertyGroupDescription("WorkOrderDisplayName"));
WPF
<ListView ItemsSource="{Binding WorkOrdersGroupingICollectionView}">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" FontSize="16" Foreground="Red" Background="{Binding BackgroundColor}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ListView.GroupStyle>
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding WorkOrderDisplayName}" MinWidth="155" Background="{Binding BackgroundColor}" Foreground="Black" Padding="8 3 8 3" FontSize="14" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Пересмотрено с ContainerStyle.Просто нужен BackgroundColor для правильного связывания (это не работает как есть):
<ListView Grid.Row="1" Name="WorkOrderGroupsList"
ItemsSource="{Binding WorkOrdersGroupingICollectionView}">
<ListView.GroupStyle>
<GroupStyle>
<GroupStyle.ContainerStyle>
<Style TargetType="{x:Type GroupItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type GroupItem}">
<TextBlock Text="{Binding Name}" FontSize="16" Foreground="Red" Background="{Binding BackgroundColor}" Margin="3"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</GroupStyle.ContainerStyle>
</GroupStyle>
</ListView.GroupStyle>
</ListView>