wpf - 如何防止 WPF 中的动画菜单?

标签 wpf

我们的设计师对此非常着迷,我只是找不到正确的搜索关键字来找出解决方法。

WPF 中的菜单和上下文菜单具有与其关联的“显示”动画。我们希望在不破坏系统设置的情况下消除这些问题。我设法使用 Blend 将模板拉出来,但其中没有任何关于动画的内容。一定是从某个地方继承的吗?

有人可以帮忙吗?任何想法将不胜感激。

最佳答案

总之,decyclone是对的;它来自操作系统,但原因如下:

MenuItem 的默认模板包含用于显示子菜单的标记和逻辑。看那儿。

当我打开 MenuItem 模板的副本时,我发现不少于四个 ControlTemplate s,三Style s,两个Brush是的,这样的例子不胜枚举。使用 Blend 来“编辑任何菜单项的副本”。

ControlTemplate内与MenuItem相关的子菜单是一个名为 Popup 的控制原语。 ,声明如下:

            <Popup x:Name="PART_Popup" 
                   AllowsTransparency="true" 
                   Focusable="false" 
                   HorizontalOffset="-2" 
                   IsOpen="{Binding IsSubmenuOpen, 
                            RelativeSource={RelativeSource TemplatedParent}}" 
                   PopupAnimation="{DynamicResource 
                                    {x:Static SystemParameters.MenuPopupAnimationKey}}" 
                   Placement="Right" 
                   VerticalOffset="-3">

注意 PopupAnimation属性(property);它指向SystemParameters.MenuPopupAnimationKey 。这就是使菜单具有动画效果的东西。

这给了我两个选择,这两个选择都需要您为 MenuItem 定义一个自定义模板。在您的应用程序中:

  • 重新配置 PART_Popup 以便 AllowsTranparency="False" ;或
  • 重新模板 MenuItem对于您的应用程序,删除 PopupAnimation对操作系统动画的引用。

然后,您可以编写自己的触发器来为弹出窗口的显示方式设置动画。

关于wpf - 如何防止 WPF 中的动画菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121726/

相关文章:

c# - 标签目标扩展器

.net - 创建新 GUI 时,WPF 是不是 Windows 窗体的首选?

c# - "The image format is unrecognized"取决于显示器

c# - ICommand 依赖属性

c# - 将 Windows 窗体值发送到 wpf 控件以更新位于 wpf 控件中的属性。

滚动到顶部/底部时,Wpf 禁用重复按钮

c# - 整个工具提示的背景色

c# - 使用 IEventAggregator 的 Caliburn Micro Stack 溢出异常

c# - 单元测试自定义 OnRender-Method

c# - TreeViewItem 中的背景不是全宽