Joh*_*ohn 4 wpf animation visibility
我正在试图弄清楚如何为WPF窗口设置从Visibile到Hidden的更改动画.我目前让应用程序工作的方式是窗口通常是隐藏的,当我将鼠标移动到屏幕的一侧时,它弹出,我使用布尔到可见性转换器来做那个,但我想做什么是让应用程序在鼠标悬停时更顺畅地滑出,然后再次滑入.
我没有任何动画,所以我不知道如何做到这一点.首先,我不确定我应该使用什么动画来做这个,其次我不确定我是否应该在viewmodel中的"IsWindowVisibile"属性上触发它,或者我是否应该将它绑定到VisibilityChanged事件,第三,我当窗口大小可变时,我不确定这是否可行.
[编辑]
如果有必要,我会"采取"不透明度解决方案,但这并不是我想要的"滑动"效果.
Myk*_*iuk 12
我做了类似的事情(不透明度在2秒内变为0并且窗口隐藏):只看代码,它很简单
MainWindow.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>
Run Code Online (Sandbox Code Playgroud)
MainWindow.xaml.cs
public void ShowMe() {
(FindResource("showMe") as Storyboard).Begin(this);
}
public void HideMe() {
(FindResource("hideMe") as Storyboard).Begin(this);
}
Run Code Online (Sandbox Code Playgroud)
只需调用HideMe()或ShowMe()代替设置Visibility = Visibility.Hidden代码
编辑
移动窗口时WPF很慢,所以如果你需要滑动动画:
制作透明窗口(AllowsTransparency="True" Background="Transparent" WindowStyle="None")
将所有控件放在不透明面板上(Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}")
此面板的动画Margin.Left从0到窗口ActualWidth,然后隐藏窗口-这将删除保存窗口大小的问题
| 归档时间: |
|
| 查看次数: |
10717 次 |
| 最近记录: |