如何在另一个样式上建立样式并引用其元素?

时间:2019-04-11 11:04:38

标签: c# wpf controltemplate basedon

我有一个ExtendedTreeView控件,该控件扩展了TreeView。我的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>

有解决这个问题的方法吗?或其他替代方法?谢谢

0 个答案:

没有答案