WPF-如何更改子项';父级鼠标上方的s样式

WPF-如何更改子项';父级鼠标上方的s样式,wpf,xaml,Wpf,Xaml,我有一个StackPanel(1),里面有另一个StackPanel(2) SP 2应隐藏(不透明度:0),直到SP 1悬停。鼠标悬停应将SP2的样式更改为不透明度:100 我曾尝试在StackPanel资源中定义样式,然后使用触发器以内部面板为目标,但我不确定如何从触发器内部以子对象为目标 要做到这一点,什么是简单的样式结构?我不完全理解您需要什么,所以我发布了两个示例 为清晰起见,请使用颜色进行采样: 1) 当sp1 sp2上的鼠标指针变为绿色时 <Window x:Class="P

我有一个
StackPanel
(1),里面有另一个
StackPanel
(2)

SP 2应隐藏(不透明度:0),直到SP 1悬停。鼠标悬停应将SP2的样式更改为不透明度:100

我曾尝试在StackPanel资源中定义样式,然后使用触发器以内部面板为目标,但我不确定如何从触发器内部以子对象为目标


要做到这一点,什么是简单的样式结构?

我不完全理解您需要什么,所以我发布了两个示例

为清晰起见,请使用颜色进行采样:

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

2) 当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>
<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>


第一个正是我需要的。非常感谢。有趣的是:我使用了第一个默认为Property=“Visibility”Value=“Collapsed”的示例。但是我在Designer:-)上看不到它。