2013-02-20 16 views
7

Mam aplikację, która daje mi możliwość zmiany tematu aplikacji za pośrednictwem RessourceDictionary, co oznacza, że ​​mogę używać wyłącznie czystego XAML.Wpf Style: Wiązanie z własnością dziecka poprzez ElementName

Teraz chcę ukryć DockPanel, który nie ma elementu ElementName, ale ma element potomny z właściwością x: Name.

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

Z Code to jestem coraz pierwszego dziecka z DockPanel, ale chcę powiązać wartość dla konkretnego dziecka, które ma niepowtarzalny ElementName.

Tak więc nie wszystkie DockPanel znika, tylko ten, który ma Child of Type, np. "TextBox" z nazwą elementu "MyTextBox".

Ktoś ma pomysł, jak to zrobić? Dzięki ;-)

Odpowiedz

12

Gotowy do pracy DockPanel ma Border jako Parent i dzięki temu Kodowi mogę ustawić Widoczność tej Granicy na Ukrytą!

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

Możliwa poprawa: Nie odwołać TextBox za Indeksie iterację Childs ...