gpt4 book ai didi

wpf - 使用鼠标悬停调整按钮可见性

转载 作者:行者123 更新时间:2023-12-04 04:08:01 33 4
gpt4 key购买 nike

我只想在用户将鼠标放在其位置上时显示一个按钮,一旦鼠标离开该区域,该按钮应该恢复为隐藏状态。这是我的按钮代码。

<StackPanel Name="ButtonOptions" Orientation="Horizontal" DockPanel.Dock="Bottom" Background="DarkBlue" Height="50" Width="auto">
<!--<StackPanel.Resources>
<Style TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</Trigger>
</Style.Triggers>
</Style>
</StackPanel.Resources>-->
<Button Name="LoginButton" FontSize="12" Click="LoginButton_Click" Content="Log In" Width="100" Height="31" Margin="50,0,0,0"
FontFamily="Arial" Visibility="Visible" IsEnabled="True" MouseEnter="LoginButton_MouseEnter" />
<Button Name="OptionsButton" Content="Options" Width="100" Height="31" Margin="20,0,0,0" FontFamily="Arial"
FontSize="12" Click="OptionsButton_Click" Visibility="Hidden" IsEnabled="False"/>
</StackPanel>

资源部分被注释掉了,因为我试过了,但没有用。我的登录按钮附加了以下事件处理程序..
LoginButton.MouseEnter += new MouseEventHandler(LoginButton_MouseEnter);

处理这个的方法是..
private void LoginButton_MouseEnter(object sender, MouseEventArgs e)
{
MessageBox.Show("Made in the login button listener for mouseOver");

LoginButton.Visibility = Visibility.Visible;
}

当我运行我的应用程序时,当我把按钮应该在的位置放在上面时没有任何 react 。但是,如果我最初将登录按钮的可见性设置为 Visible,我可以看到该按钮,当我点击它时,我的用户登录的登录逻辑方法被覆盖,并提示我在用于“在 mouseOver 的登录按钮监听器中制作”的 MouseEventListener 方法。不仅如此,我还收到其中两条消息(第一次单击“确定”后,它会立即再次弹出)我不知道为什么它不起作用,也不知道为什么我的单击事件方法被忽略了,现在 mouseEvent 方法发生。

任何想法或帮助将不胜感激,谢谢!

最佳答案

题外话:
首先,让项目突然出现在您的鼠标“下方”确实是一个糟糕的设计,我建议您更改它。

主题:
正如评论部分中其他人已经提到的,每当控件处于隐藏或折叠状态时,它将停止处理任何输入,因此您不会触发任何触发器。

您可以使用 Opacity 属性来实现您所寻求的行为,此外还可以在“MouseEnter”和“MouseLeave”上使用 EventTriggers 以便能够在那里放置漂亮的动画。以下是我将如何编写该样式:

<Style x:Key="FadeOutButton" TargetType="{x:Type Button}">
<Style.Triggers>
<EventTrigger RoutedEvent="Control.MouseEnter">
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Duration="0:0:1" To="1" Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="Control.MouseLeave">
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Duration="0:0:1" To="0.2" Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Style.Triggers>
</Style>

现在,回到我的第一个想法,我强烈建议即使鼠标未悬停(在上面的示例中不透明度 = 0.2)也保持按钮可见并播放动画时间。如果它不是一个选项,您始终可以将动画持续时间设置为 0:0:0 和不透明度值 ti 0,您将获得与可见性相同的结果(至少在视觉上)。

后来编辑:
您必须像这样在按钮上应用样式:
<Button Content="my button" Style="{StaticResource FadeOutButton}" Opacity="0.2"/>

关于wpf - 使用鼠标悬停调整按钮可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9608203/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com