Wpf样式:通过ElementName绑定到子属性

mak*_*kim 7 wpf xaml

我有一个应用程序,它给我选项通过RessourceDictionary更改应用程序主题,这意味着我只能使用纯XAML.

现在,我想要做的是隐藏一个没有ElementName的DockPanel,但它有一个带有x:Name属性的Child.

<Style TargetType="DockPanel">
         <Setter Property="Visibility" Value="{Binding RelativeSource={RelativeSource Self}, Path=Child.Visibility}"/>
</Style>
Run Code Online (Sandbox Code Playgroud)

使用此代码我获得了DockPanel的第一个Child,但是我想将值绑定到具有唯一ElementName的特定Child.

因此,并非每个DockPanel都会消失,只有具有类型子类的那个,例如"TextBox",其元素名称为"MyTextBox".

任何人都有一个想法如何做到这一点?谢谢 ;-)

mak*_*kim 13

得到它的工作DockPanel有一个边框作为父和这个代码我可以设置这个边框的可见性隐藏!

<Style TargetType="Border">
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=Child.Children[2].Name}"
                         Value="SearchTextBox">
                <Setter Property="Visibility" Value="Hidden"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>
Run Code Online (Sandbox Code Playgroud)

可能的改进:不要引用每个索引的TextBox,遍历子项...