代码之家  ›  专栏  ›  技术社区  ›  scobi

如何防止在WPF中设置菜单动画?

wpf
  •  2
  • scobi  · 技术社区  · 14 年前

    我们的设计师正在为此发疯,我只是找不到正确的搜索关键字来找出如何修复它。

    2 回复  |  直到 14 年前
        1
  •  4
  •   Rob Perkins    14 年前

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

    The default template for a MenuItem contains the markup and logic for displaying submenus. 看那儿。

    ControlTemplate S,三 Style 两个 Brush 嗯,名单还在继续。使用Blend“编辑任何菜单项的副本”。

    里面 控件模板 与A有关 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 属性;它指向 SystemParameters.MenuPopupAnimationKey . 这就是为你的菜单设置动画的东西。

    This gives you two choices that occur to me, both of which will require that you define a custom template for the 菜单项 在你的应用程序中:

    • 重新配置零件弹出窗口,以便 AllowsTranparency="False" 或;或
    • 重模板 菜单项 对于您的应用程序,删除 弹出动画 对操作系统动画的引用。

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

        2
  •  0
  •   decyclone    14 年前

    Context Menu 或A Menu 在任何 Windows Application 被管理 Windows Operating System 本身。你可以去 Display Properties gt; Appearance 如何改变 菜单 显示在系统中。

    对于一个 WPF Application ,您可以订阅 菜单 Opening/Opened 事件和开始 Storyboard 激活它。我不确定怎么做,但我认为这是你应该改变行为的方式。