3

WPF デスクトップ アプリがあります。W8 ユーザーから、アプリのコード補完ウィンドウが正しく配置されていないという報告を受けました。調査したところ、wpfのポップアップの配置と競合するW8タブレット設定の設定であることがわかりました

タブレットの設定

デフォルトは右利きで、コード補完ポップアップは次のようになります ここに画像の説明を入力

左利きに変更すると、コード補完ポップアップは次のように正しくレンダリングされます ここに画像の説明を入力

プログラムでアプリに左利きの設定を使用させるか、完全に無視して 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