2013-02-20 79 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> 

可能的改進:不要引用每個索引的文本框,通過孩子的迭代...