【发布时间】:2013-04-15 04:57:40
【问题描述】:
我有一个StackPanel (1),里面还有另一个StackPanel (2)。
SP 2 应该被隐藏(不透明度:0),直到 SP 1 悬停。鼠标悬停应将 SP2 的样式更改为 Opacity:100。
我尝试在 StackPanel 资源中定义样式,并在其中使用触发器来定位内部面板,但我不确定我应该如何从触发器内部定位子级。
什么是简单的样式结构来做到这一点?
【问题讨论】:
我有一个StackPanel (1),里面还有另一个StackPanel (2)。
SP 2 应该被隐藏(不透明度:0),直到 SP 1 悬停。鼠标悬停应将 SP2 的样式更改为 Opacity:100。
我尝试在 StackPanel 资源中定义样式,并在其中使用触发器来定位内部面板,但我不确定我应该如何从触发器内部定位子级。
什么是简单的样式结构来做到这一点?
【问题讨论】:
我不完全了解您需要什么,所以我发布了 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>
【讨论】: