-
右键菜单,
tootip
等弹出时,弹出的位置经常在左侧,使用体验不好。 -
弹出方向有左对齐和右对齐
SystemParameters.MenuDropAlignment
-
当右对齐时,值为
false
-
可以在控制面板中查看当前的设置:.

-
如何在软件中强制向右弹出显示?
-
可以设置
SystemParameters.MenuDropAlignment
值,因为没有公开属性的set
方法,只能用反射去修改了。
public static class MenuDropAlignmentHelper
{
private static FieldInfo _menuDropAlignmentField;
public static void DisableSystemMenuAlignment()
{
_menuDropAlignmentField = typeof(SystemParameters).GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
EnsureStandardPopupAlignment();
SystemParameters.StaticPropertyChanged -= SystemParameters_StaticPropertyChanged;
SystemParameters.StaticPropertyChanged += SystemParameters_StaticPropertyChanged;
}
private static void SystemParameters_StaticPropertyChanged(object sender, PropertyChangedEventArgs e)
{
EnsureStandardPopupAlignment();
}
private static void EnsureStandardPopupAlignment()
{
if (SystemParameters.MenuDropAlignment)
{
_menuDropAlignmentField?.SetValue(null, false);
}
}
}
-
之后在相应的窗口下,调用此方法 MenuDropAlignmentHelper.DisableSystemMenuAlignment
即可。