2

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>
4

1 に答える 1