我正在寻找更新 GroupStyle 的最佳方法。
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>
当某些事情发生变化时,例如从组中删除或添加项目时,我不想再次触发 GroupStyleSelector 的选择。
任何想法如何做到这一点?
仅供参考,我想在每个 GroupItem 上使用 AttachedProperty Bound 来装配一些东西
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>