在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"; } 

在视图:

              

示例截图:

在此处输入图像描述