2013-02-20 25 views
7

RessourceDictionaryを使用してアプリケーションテーマを変更するオプションを提供するアプリケーションがあります。これは純粋なXAMLのみを使用できることを意味します。Wpfスタイル:ElementNameを使用して子プロパティにバインドする

ここで、私がしたいのは、ElementNameを持たないDockPanelを隠すことですが、x:Nameプロパティを持つChildを持っています。

このコード - 私は、DockPanelの最初の子を取得して
<Style TargetType="DockPanel"> 
     <Setter Property="Visibility" Value="{Binding RelativeSource={RelativeSource Self}, Path=Child.Visibility}"/> 
</Style> 

、 私は独特のElementNameを持つ特定の子に値をバインドします。

すべてのDockPanelが消えるわけではなく、タイプの子を持つものだけが消えます。要素名が "MyTextBox"の "TextBox"。

誰もがどのようにアイデアを持っていますか?ありがとう;-)

答えて

12

DockPanelが親としてBorderを持っており、このコードでこのBorderのVisibilityをHiddenに設定することができます。

<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を参照しないでください...

関連する問題