1

a と b の 2 つのアイコンがありました。radtreeviewitem が開いたときにアイコン a の Expander ボタンを表示し、閉じたときにアイコン b を表示する必要があります。流れるのは2つのアイコン

<Style x:Key="ExpanderStyleOpen" TargetType="ToggleButton">
            <Setter Property="IsEnabled" Value="True" />
            <Setter Property="IsTabStop" Value="False" />
            <Setter Property="ToggleButton.IsChecked" Value="True" />
            <Setter Property="Cursor" Value="Hand" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ToggleButton">
                        ...
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
        <Style x:Key="ExpanderStyleClose" TargetType="ToggleButton">
            <Setter Property="IsEnabled" Value="True" />
            <Setter Property="IsTabStop" Value="False" />
            <Setter Property="ToggleButton.IsChecked" Value="False" />
            <Setter Property="Cursor" Value="Hand" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ToggleButton">
                       ...
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

それから私のradtreeview...

<telerik:RadTreeView Name="radTreeView"
<!--static can't change...:(-->
                             ExpanderStyle="{StaticResource ExpanderStyleClose}"
                             FontSize="12"
                             IsLineEnabled="True"
                             IsRootLinesEnabled="False"
                             Visibility="{Binding IsVisible}">
4

1 に答える 1

2

を使用するTriggerと、2つのスタイルを1つに組み合わせることができます。

アイデアは次のとおりです。

  1. 閉じた画像をスタイルの実際の画像として設定します。
  2. を作成して、のプロパティTriggerを変更します。それは「閉じた」とき、開いたときです。ToggleButtonIsCheckedfalsetrue

このようなものが機能するはずです:

<Style x:Key="ExpanderStyle" TargetType="{x:Type ToggleButton}">
    <Setter Property="IsEnabled" Value="True" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="Cursor" Value="Hand" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ToggleButton}">
                <StackPanel Orientation="Horizontal">
                    <Grid SnapsToDevicePixels="False" Background="Transparent">
                        <Image x:Name="expanderImage" Source="..." />
                    </Grid>
                    <ContentPresenter />
                </StackPanel>
                <ControlTemplate.Triggers>
                    <Trigger Property="IsChecked" Value="false">
                        <Setter Property="Source" TargetName="expanderImage" Value="..." />
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
于 2012-08-24T13:57:47.103 に答える