2013-04-15 20 views
10

私はStackPanel(1)、別のStackPanel(2)を持っています。WPF - 親のマウスオーバーで子供のスタイルを変更する方法

SP 1がホバーされるまで、SP 2は非表示にする必要があります(不透明度:0)。マウスオーバーは、SP2のスタイルをOpacity:100に変更する必要があります。

enter image description here

私はStackPanelのリソースのスタイルを定義して、内部のパネルを対象とするが、トリガーを使用してみましたが、私は、私は、トリガーの中から子どもたちをターゲットにする必要がありますかどうかはわかりません。

これを行うための単純なスタイル構造は何ですか?

答えて

18

私はあなたが必要なものを十分に理解していないので、私は2つのサンプルを投稿しました。わかりやすくするために色で

サンプル:

1)私たちは、SP1をSP2にマウスオーバーしていたときに取得緑色

<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)私たちは、SP2のSP2にマウスオーバーしていたときに取得緑色

<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

最初のものはまさに私が必要としたものです。ありがとうございました! – Yisela

+0

面白いこと:私は** Property = "Visibility" Value = "Collapsed" **の最初のサンプルをデフォルトとして使用しました。デザイナーには見えません:-)。 – itsho

関連する問題