C# wpf上下文菜单子菜单位置

C# wpf上下文菜单子菜单位置,c#,wpf,C#,Wpf,什么决定了子菜单在上下文菜单中的位置 我动态创建了一个ContextMenu,并设置了PlacementRectangle,使其显示在屏幕的中心-到目前为止还不错 有些项目显示一个子菜单。 但是,子菜单始终默认显示在左侧。 它应该默认显示在所选父项的右侧 如何更改此项?这是MenuItem.TopLevelItemTemplateKey的默认设置 <Popup x:Name="PART_Popup" AllowsTransparency="True" Focusable="False" I

什么决定了子菜单在上下文菜单中的位置

我动态创建了一个ContextMenu,并设置了PlacementRectangle,使其显示在屏幕的中心-到目前为止还不错

有些项目显示一个子菜单。 但是,子菜单始终默认显示在左侧。 它应该默认显示在所选父项的右侧


如何更改此项?

这是
MenuItem.TopLevelItemTemplateKey的默认设置

<Popup x:Name="PART_Popup" AllowsTransparency="True" Focusable="False" IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}" Placement="Bottom" >
 <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">
编辑1: 查找App.xaml文件中定义的弹出窗口的自定义样式,默认情况下,该样式可能会设置所有弹出窗口在屏幕中央的位置

编辑2: 如果您使用带触摸屏的windows,菜单将显示在与为右手或左手定义的方向相反的位置,这样使用时,菜单不会被手遮挡
这是
MenuItem.TopLevelItemTemplateKey的默认设置

<Popup x:Name="PART_Popup" AllowsTransparency="True" Focusable="False" IsOpen="{Binding IsSubmenuOpen, RelativeSource={RelativeSource TemplatedParent}}" PopupAnimation="{DynamicResource {x:Static SystemParameters.MenuPopupAnimationKey}}" Placement="Bottom" >
 <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">
编辑1: 查找App.xaml文件中定义的弹出窗口的自定义样式,默认情况下,该样式可能会设置所有弹出窗口在屏幕中央的位置

编辑2: 如果您使用带触摸屏的windows,菜单将显示在与为右手或左手定义的方向相反的位置,这样使用时,菜单不会被手遮挡

在打开的子菜单事件中,我检查零件弹出窗口的位置值,并将其设置为右侧。`Popup Popup=menuItem.Template.FindName(“PART_Popup”,menuItem)作为弹出窗口;如果(popup!=null){popup.Placement确实==就在这里。}`阅读上面我的第二次编辑,也许它解决了您的问题(我在这里遇到了这个问题),而不是在触摸屏上,并且所有其他菜单都是正确的。我想知道是什么原因把款式弄乱了。主上下文菜单有一个下拉阴影,子菜单显示为平面,只是外观不同。奇怪的是,在子菜单打开事件中,我检查了Part_弹出窗口的位置值,并将其设置为右侧Popup Popup=menuItem.Template.FindName(“PART_Popup”,menuItem)作为弹出窗口;如果(popup!=null){popup.Placement确实==就在这里。}`阅读上面我的第二次编辑,也许它解决了您的问题(我在这里遇到了这个问题),而不是在触摸屏上,并且所有其他菜单都是正确的。我想知道是什么原因把款式弄乱了。主关联菜单有一个下拉阴影,子菜单显示为平面,只是外观不同。