最近项目中使用弹出控件Popup,没有注意弹出的对齐方式在不同的系统中的不同,导致部署到不同机器上的时候弹出位置不正确(开发使用的Win10机器,安装运行是在Win7,Popup在win10上是弹出在左边,Win7上是弹出在右边)。现在记录解决方案于此:
修改弹出菜单相对于相应菜单项是左对齐还是右对齐
public static void FixPopupBug()
{
var ifLeft = SystemParameters.MenuDropAlignment;
if (ifLeft)
{
var t = typeof(SystemParameters);
var field = t.GetField(“_menuDropAlignment”, BindingFlags.NonPublic | BindingFlags.Static);
field.SetValue(null, false);
}
}
将win10下弹出菜单默认弹出到左边改为右边。 在App.xaml.cs的OnStartup函数里调用一下。
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
FixPopupBug();
}