在 StackPanel WPF 中使用 MouseOver
using MouseOver in StackPanel WPF
我刚刚开始学习 WPF
并试图在 MouseOver
期间隐藏一个 StackPanel
。下面是我使用的代码。当鼠标放在上面时,我只能看到 Panel
闪烁,但它并没有完全隐藏。我在这里错过了什么吗?提前致谢。
<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Visibility" Value="Hidden" />
</Trigger>
<Trigger Property="IsMouseOver" Value="false">
<Setter Property="Visibility" Value="Visible" />
</Trigger>
</Style.Triggers>
</Style>
堆栈面板:
<StackPanel Style="{StaticResource myStyle}">
// Child controls
</StackPanel>
隐藏 StackPanel 时,IsMouseOver
属性 切换为 false
,这使 StackPanel 再次可见。
您可以设置 Opacity
属性 而不是 Visibility
:
<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Opacity" Value="1" />
</Trigger>
</Style.Triggers>
</Style>
或者,正如另一个答案中指出的那样,只为 IsMouseOver == true
声明一个触发器:
<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0" />
</Trigger>
</Style.Triggers>
</Style>
Clemens 已经回答了您的问题,但仅供参考,当您触发布尔值时,您不需要 both 状态的触发器。只需为 true 或 false 状态设置一个触发器,然后当状态不再应用触发器中设置器更改的属性时将恢复到以前的值。这将减少您需要编写的 XAML 的数量。
我刚刚开始学习 WPF
并试图在 MouseOver
期间隐藏一个 StackPanel
。下面是我使用的代码。当鼠标放在上面时,我只能看到 Panel
闪烁,但它并没有完全隐藏。我在这里错过了什么吗?提前致谢。
<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="true">
<Setter Property="Visibility" Value="Hidden" />
</Trigger>
<Trigger Property="IsMouseOver" Value="false">
<Setter Property="Visibility" Value="Visible" />
</Trigger>
</Style.Triggers>
</Style>
堆栈面板:
<StackPanel Style="{StaticResource myStyle}">
// Child controls
</StackPanel>
隐藏 StackPanel 时,IsMouseOver
属性 切换为 false
,这使 StackPanel 再次可见。
您可以设置 Opacity
属性 而不是 Visibility
:
<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0" />
</Trigger>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Opacity" Value="1" />
</Trigger>
</Style.Triggers>
</Style>
或者,正如另一个答案中指出的那样,只为 IsMouseOver == true
声明一个触发器:
<Style x:Key="myStyle" TargetType="{x:Type StackPanel}">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0" />
</Trigger>
</Style.Triggers>
</Style>
Clemens 已经回答了您的问题,但仅供参考,当您触发布尔值时,您不需要 both 状态的触发器。只需为 true 或 false 状态设置一个触发器,然后当状态不再应用触发器中设置器更改的属性时将恢复到以前的值。这将减少您需要编写的 XAML 的数量。