2013-02-20 53 views
7

我有一个应用程序,它提供了通过RessourceDictionary更改应用程序主题的选项,这意味着我只能使用纯XAML。Wpf风格:通过ElementName绑定到子属性

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

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

与此代码I'm得到DockPanel中, 的第一个孩子,但我想价值具有独特的ElementName特定的儿童约束。

因此,不是每个DockPanel消失,只有一个具有类型的子例如带有“MyTextBox”元素名的“TextBox”。

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

回答

12

得到它的工作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> 

可能的改进:不要引用每个索引的文本框,通过孩子的迭代...