C# WPF功能区应用程序菜单放置错误

C# WPF功能区应用程序菜单放置错误,c#,wpf,C#,Wpf,我有一个WPF应用程序,它使用Microsoft System.Windows.controls.Ribbon程序集中的功能区控件。应用程序菜单在我们的大多数机器上都能正确渲染,但在Surface Pro上,菜单项的位置很差。我想知道为什么Surface Pro表现出不同的行为,以及我可以尝试的其他步骤 首先,这里有一些简单的XAML,可用于重现问题(但仅限于Surface Pro): 在我们的Windows 10桌面计算机上,一切都可以正常渲染: 但是菜单在Surface Pro上的位置

我有一个WPF应用程序,它使用Microsoft System.Windows.controls.Ribbon程序集中的功能区控件。应用程序菜单在我们的大多数机器上都能正确渲染,但在Surface Pro上,菜单项的位置很差。我想知道为什么Surface Pro表现出不同的行为,以及我可以尝试的其他步骤

首先,这里有一些简单的XAML,可用于重现问题(但仅限于Surface Pro):


在我们的Windows 10桌面计算机上,一切都可以正常渲染:

但是菜单在Surface Pro上的位置很奇怪(同样运行Windows 10):

起初,我试图通过更改显示器的DPI设置(100%=>150%)以匹配曲面,在我的开发机器上重现这个问题。这是行不通的;应用程序仍然正常运行

接下来,我尝试使用自定义样式覆盖菜单弹出窗口的位置:

<RibbonApplicationMenuItem.Resources>
    <Style TargetType="Popup">
        <Setter Property="Placement" Value="Right" />
    </Style>
</RibbonApplicationMenuItem.Resources>

在曲面上,菜单似乎完全忽略放置特性。使用相同的样式,我可以调整HorizontalOffset和VerticalOffset属性,但它似乎忽略了我尝试对PlacementTarget所做的任何更改。我尝试相对于顶层窗口定位弹出窗口,但它似乎忽略了我首选的放置目标,始终使用父菜单项


以前有人遇到过这个问题吗?并且希望知道如何解决这个问题?

这是由于笔选项上的利手设置。(有关确切设置,请参见。)

要忽略/覆盖利手设置,请检查以下问题:


更新:非平板电脑的手控设置配置已移动检查此

您的第一个屏幕截图在Windows 7上。所以要么你没有测试你声明的内容,要么你在这里提供了一个错误的屏幕截图。@IvanIč是的,第一个屏幕截图是在Windows7上拍摄的。但我也在Windows10桌面上运行了这个程序,元素的位置是一样的。Win 7机器是拍摄此测试应用程序屏幕截图的最方便工具。请注意,解决此问题会使触摸屏用户难以使用此应用程序。您看到这种行为的原因是,当您用右手食指打开菜单时,菜单被放置在不会被手遮挡的位置。@hvd这是有道理的。但我感到惊讶的是,当系统对接时,它仍然以这种方式运行。
<RibbonApplicationMenuItem.Resources>
    <Style TargetType="Popup">
        <Setter Property="Placement" Value="Right" />
    </Style>
</RibbonApplicationMenuItem.Resources>