2013-04-15 13 views
10

Mam StackPanel (1), z innym StackPanel (2) wewnątrz.WPF - Jak zmienić styl dzieci na mouseover rodzica

SP 2 powinien być ukryty (krycie: 0), dopóki SP 1 nie będzie unosił się. Wskaźnik myszy powinien zmienić styl SP2 na Krycie: 100.

enter image description here

Próbowałem definiowania stylów w zasobach stackpanel, a przy użyciu wyzwalaczy tam następnie kierować panel wewnątrz, ale nie jestem pewien, w jaki sposób powinny być skierowane do dzieci od wewnątrz wyzwalacza.

Jaka byłaby prosta struktura stylu, aby to zrobić?

Odpowiedz

18

Nie w pełni rozumiem, czego potrzebujesz, więc wysłałem 2 próbki.

próbki kolorów dla jasności:

1) Gdy mamy mouseover na sp1 sp2 coraz kolor zielony

<Window x:Class="Prognoz.GP.DataCollection.TestMarkupProject.MainWindow" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > 
<Window.Resources> 
    <Style x:Key="test" TargetType="StackPanel"> 
     <Setter Property="Background" Value="Red" /> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=StackPanel,AncestorLevel=1}, Path=IsMouseOver}" Value="True" > 
       <Setter Property="Background" Value="Green" /> 
      </DataTrigger> 
     </Style.Triggers> 
    </Style> 
</Window.Resources> 
<Grid> 
    <StackPanel Width="400" Height="400" Background="Yellow"> 

     <StackPanel Width="350" Height="350" Style="{StaticResource test}"/> 
    </StackPanel> 
</Grid> 
</Window> 

2), gdy mamy mouseover na sp2 sp2 coraz kolor zielony

<Style x:Key="test" TargetType="StackPanel"> 
     <Setter Property="Background" Value="Red" /> 
     <Style.Triggers> 
      <Trigger Property="StackPanel.IsMouseOver" Value="True" > 
       <Setter Property="Background" Value="Green" /> 
      </Trigger> 
     </Style.Triggers> 
</Style> 
+0

Pierwszy dokładnie to, czego potrzebowałem. Dziękuję Ci! – Yisela

+0

Zabawna rzecz: użyłem pierwszej próbki z ** Właściwością = "Widocznością" Wartość = "Zwiniętym" ** jako domyślną. ale potem nie widzę tego na Designer :-). – itsho