0

我有一个扩展 TreeView 的 ExtendedTreeView 控件。我的extendedTreeView 有一个名为Highlight 的属性,因此与普通TreeView 不同,我希望extendedTreeView 基于此Highlight 属性而不是IsSelected 突出显示项目。所以我有一个为 TreeView 定义的样式,如下所示。

<Style x:Key="TreeViewStyle" TargetType="{x:Type TreeViewItem}">

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TreeViewItem}">

                        <Border Name="Bd"
                              Background="Transparent"
                              //other stuff
                        </Border>

                    <ControlTemplate.Triggers>

                        <Trigger Property="IsSelected" Value="true">
                            <Setter TargetName="Bd" Property="Background" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}" />   
                        </Trigger> 
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

然后我为基于 TreeViewStyle 的 extendedTreeView 定义了另一种样式。问题是当我尝试设置“Bd”作为边界时,它无法识别它并且不知道我指的是什么。

<Style x:Key="TreeViewStyle2" TargetType="{x:Type controls:ExtendedTreeView}" BasedOn="{StaticResource TreeViewStyle}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type TreeViewItem}">
                    <ControlTemplate.Triggers>
                        <Trigger Property="controls:ExtendedTreeView.Highlight" Value="true">
                            <Setter TargetName="Bd" Property="Background" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Background}" /> 
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

反正有解决这个问题吗?还是另一种方法?谢谢

4

0 回答 0