在WPF控件可见性更改上应用动画
我的xaml是
some controls here in a horizontal strip , by default its hidden and when some one click on top button its visible and it wil be hidden when some one click outside this area
按钮鼠标的代码是
private void showTopMenu_MouseEnter(object sender, MouseEventArgs e) { TopMenuArea.Visibility = Visibility.Visible; }
如何在更改TopMenuArea的可见性时应用动画效果? 有没有办法直接从xaml做到这一点?
Eventtrigger
或者使用淡入淡出的样式(像你一样使用鼠标进入/退出事件处理程序)
只需在App Resources或本地Window或UserControl中定义样式即可。 您可以为任何控件重用动画样式。
在Stackpanel中使用它
这是一个老问题,但我已经整理了一个开源库,允许在可见性改变,加载或绑定时淡出和/或翻译。
你可以在Github和NuGet上的SciChart.Wpf.UI.Transitionz找到它。
用法:
结果如下:
这是一个示例示例
some controls here in a horizontal strip , by default its hidden and when some one click on top button its visible and it wil be hidden when some one click outside this area
在上面的示例中,我在TopMenuArea dockPanel上设置了IsHitTestVisible="False"
,因为我可以看到它位于之前的顶部(触发器面板的源)
其他选项是使用TopMenuArea作为源,如果它在顶部
样品
some controls here in a horizontal strip , by default its hidden and when some one click on top button its visible and it wil be hidden when some one click outside this area
试一试,看看它是否接近你想要的东西。
以上两者都只是在0和1之间切换不透明度,如果需要,您也可以使用动画制作淡入淡出效果。
您可以将ToggleButton
Checked和UnChecked路由事件与Event Trigger
:
结果:
我想出了一种逐步显示Grid并使用ScaleTransform隐藏Grid的方法。
ScaleTransform设置为X = 0 Y = 0隐藏,X = 1 Y = 1显示,
和Trigger使用Tag
属性,如下面的代码:
在ViewModel:
private string _helpVisiblilityTag = "hide"; public string HelpVisiblilityTag { get { return _helpVisiblilityTag; } set { _helpVisiblilityTag = value; NotifyOfPropertyChange(() => HelpVisiblilityTag); } } public void Hide() { HelpVisiblilityTag = "hide"; } public void Show() { HelpVisiblilityTag = "show"; }
在视图:
示例截图: