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

时间:2013-02-20 15:12:25

标签: wpf xaml

我有一个应用程序,它提供了通过RessourceDictionary更改Application-Theme的选项,这意味着我只能使用纯XAML。

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

<Style TargetType="DockPanel">
         <Setter Property="Visibility" Value="{Binding RelativeSource={RelativeSource Self}, Path=Child.Visibility}"/>
</Style>

使用此代码我得到DockPanel的第一个孩子, 但我想将值绑定到具有唯一ElementName的特定Child。

因此,不是每个DockPanel都会消失,只有具有Child of Type的那个,例如“TextBox”,元素名称为“MyTextBox”。

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

1 个答案:

答案 0 :(得分:13)

有了它的工作,DockPanel有一个Border作为Parent,使用这个Code我可以设置这个Border的Visibility隐藏!

<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>

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