[英]using MouseOver in StackPanel WPF
我刚刚开始学习WPF
并试图在MouseOver
期间隐藏StackPanel
。 下面是我使用的代码。 当将鼠标放在Panel
时,我只能看到Panel
闪烁,但是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:
<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已经回答了您的问题,但是仅当您在布尔值上触发时,您无需为这两种状态都触发。 只需将单个触发器设置为true或false状态,然后当该状态不再应用时,触发器中的设置器更改的属性将恢复为之前的值。 这将减少您需要编写的XAML数量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.