3

我有一个 WPF 桌面应用程序。我收到来自 W8 用户的报告,称我们应用程序中的代码完成窗口未正确对齐。我调查并发现它在 W8 平板电脑设置中的设置与 wpf 中弹出窗口的放置相冲突

平板电脑设置

默认是右手,然后代码完成弹出窗口看起来像这样 在此处输入图像描述

当更改为左手时,代码完成弹出窗口会像这样正确呈现 在此处输入图像描述

有没有办法以编程方式强制应用程序使用左手设置,或者完全忽略它,使其像 w7 一样呈现?

编辑:得到了升级,因此可以使用解决方案进行更新,需要 .NET 4.5

private static readonly FieldInfo MenuDropAlignmentField;

static MyWindow()
{
    MenuDropAlignmentField = typeof (SystemParameters).GetField("_menuDropAlignment",
        BindingFlags.NonPublic | BindingFlags.Static);
    System.Diagnostics.Debug.Assert(MenuDropAlignmentField != null);

    EnsureStandardPopupAlignment();
    SystemParameters.StaticPropertyChanged += (s, e) => EnsureStandardPopupAlignment();
}

private static void EnsureStandardPopupAlignment()
{
    if (SystemParameters.MenuDropAlignment && MenuDropAlignmentField != null)
    {
        MenuDropAlignmentField.SetValue(null, false);
    }
}

完整代码在这里

https://github.com/AndersMalmgren/FreePIE/blob/master/FreePIE.GUI/Shells/MainShellView.xaml.cs

4

0 回答 0