Я ищу лучший способ обновить GroupStyle.WPF update ContainerStyleSelector style selection
CS:
У меня есть GroupStyleSelector (упрощенный):
public class CountBasedGroupStyleSelector : StyleSelector
{
public Style SingleItemGroupStyle { get; set; }
public Style MultipleItemGroupStyle { get; set; }
public override Style SelectStyle(object item, DependencyObject container)
{
var group = item as CollectionViewGroup;
return group.ItemCount == 1 ? SingleItemGroupStyle : MultipleItemGroupStyle;
}
}
XAML:
<tsk:CountBasedGroupStyleSelector x:Key="groupStyleSelector" SingleItemGroupStyle="{StaticResource SingleItemGroupStyle}"
MultipleItemGroupStyle="{StaticResource MultipleItemGroupStyle}" />
<TreeView>
<TreeView.GroupStyle>
<GroupStyle x:Name="groupStyle" ContainerStyleSelector="{StaticResource groupStyleSelector}" />
</TreeView.GroupStyle>
</TreeView>
Я wan't, чтобы вызвать выбор в GroupStyleSelector снова, когда что-то меняется, например, когда элемент удаляется или добавляется из группы.
любая идея, как это можно сделать?
FYI, я подумал о подтасовке что-то с помощью AttachedProperty Bound на каждом GroupItem
GroupItemStyles: (упрощенный)
<Style x:Key="MultipleItemGroupStyle" TargetType="GroupItem">
<Setter Property="Padding" Value="0,0,1,0" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<Grid>
<Border Margin="{TemplateBinding Padding}" x:Name="grpOverlayBd" CornerRadius="4" Background="#FFAAAAAA" BorderThickness="0" BorderBrush="Transparent" >
<ItemsPresenter />
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SingleItemGroupStyle" TargetType="GroupItem">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="GroupItem">
<ItemsPresenter />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Как насчет создания привязки данных к свойству ItemsSource .Count. Всякий раз, когда он изменяется, вы применяете свой групповой стиль к древовидной структуре, он должен обновляться каждый раз. Я думал о том, что для ContainerStyleSelector зависит от указанного свойства Count, но, к сожалению, это не свойство DP, поэтому привязка не разрешена. – Maximus
Есть несколько групп, каждый из которых нуждается в повторном выборе его группового стиля, возможно, я постараюсь сделать это для постоянного группового стиля, который изменит его шаблон и свойства оратора по тиграм. –