我正在尝试弄清楚如何为 WPF 窗口从 Visibile 到 Hidden 的更改设置动画。我目前让应用程序工作的方式是,窗口通常是隐藏的,当我将鼠标移动到屏幕一侧时,它会弹出,我正在使用布尔值到可见性转换器来执行此操作,但我想要做什么是让应用程序在鼠标悬停时更平滑地滑出,然后再滑回。
我没有对动画做过任何事情,所以我不知道该怎么做。首先,我不太确定应该使用什么动画来执行此操作,其次,我不太确定是否应该在视图模型中的“IsWindowVisibile”属性上触发此操作,或者是否应该将其绑定到 VisibilityChanged 事件,第三,我我不确定当窗口大小可变时这是否可能。
[Edit]
如果有必要,我会“采取”不透明解决方案,但这并不完全是我想要获得的“滑动”效果。
我做了类似的事情(不透明度在 2 秒内变为 0 并且窗口隐藏):只需看看代码,很简单
主窗口.xaml:
<Storyboard x:Key="hideMe">
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:2" To="0.0"/>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:2" Value="{x:Static Visibility.Hidden}"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="showMe">
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
</ObjectAnimationUsingKeyFrames>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:5" To="0.75"/>
</Storyboard>
MainWindow.xaml.cs
public void ShowMe() {
(FindResource("showMe") as Storyboard).Begin(this);
}
public void HideMe() {
(FindResource("hideMe") as Storyboard).Begin(this);
}
只需致电HideMe()
or ShowMe()
而不是设置Visibility = Visibility.Hidden
in code
Edit
WPF在移动窗口时速度很慢,因此如果需要滑动动画:
制作一个透明窗口(AllowsTransparency="True" Background="Transparent" WindowStyle="None"
)
将所有控件放在不透明面板上(Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}"
)
为该面板设置动画Margin.Left
from 0
到窗户ActualWidth
,然后隐藏一个窗口 - 这将消除保存窗口大小的问题
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)