2013-02-20 12 views
7

Possiedo un'applicazione che mi consente di modificare il tema dell'applicazione tramite un RessourceDictionary, ovvero posso utilizzare solo XAML puro.Stile Wpf: collegamento a proprietà figlio tramite ElementName

Ora, quello che voglio fare è nascondere un DockPanel, che non ha un ElementName, ma ha un figlio con una proprietà x: Name.

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

Con questo codice sto ottenendo il primo figlio del DockPanel, ma voglio associare il valore per il Bambino specifico che ha un ElementName unica.

Quindi non tutti i DockPanel scompaiono, solo quello che ha un figlio di tipo, ad es. "TextBox" con un Elementname di "MyTextBox".

Qualcuno ha un'idea come farlo? Grazie ;-)

risposta

12

Capito che funziona DockPanel ha un bordo come genitore e con questo codice posso impostare la visibilità di questo bordo su nascosto!

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

possibile miglioramento: Non fare riferimento TextBox per Index, scorrere Childs ...

Problemi correlati