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