как основать стиль на другом стиле и ссылаться на его элементы? - PullRequest
0 голосов
/ 11 апреля 2019

У меня есть элемент управления 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>

А затем я определяю другой стиль для extendedTreeView, который основан на TreeViewStyle.Проблема в том, что, когда я пытаюсь установить «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>

Есть ли способ исправить это?или альтернативный способ сделать это?спасибо

...