13

(1)がStackPanelあり、中に別のStackPanel(2) があります。

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

ここに画像の説明を入力

StackPanel リソースでスタイルを定義し、そこでトリガーを使用して内側のパネルをターゲットにしようとしましたが、トリガー内から子をターゲットにする方法がわかりません。

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

4

1 に答える 1

28

私はあなたが必要とするものを完全には理解していないので、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>
于 2013-04-15T05:31:52.017 に答える