WPF中Popup等弹窗的位置不对(偏左或者偏右)

本文介绍了WPF中Popup等弹窗在不同系统设置下位置显示异常的问题,并提供了一段代码来自动修正这一问题,使弹窗位置在左右手模式下都能正确显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文: WPF中Popup等弹窗的位置不对(偏左或者偏右)

1.情况如图:

   正常情况:         部分特殊情况:

 

     在一般的电脑都能正确显示,就是第一种情况,同样的代码为什么在不同的电脑就会显示不同的位置呢,原来Windows为了满足

不同需求的用户,左撇子和右撇子,就会显示不同的情况,在显示异常的电脑中,在运行中输入Table 如果出现下图中的内容:

       

    就是那个Table PC settings中的设置导致的,点击它,然后进入other,就可以看到

       

       有Right-handed和Left-handed, 这两个选项就是问题的根源

2. 那么在代码中如何处理呢,肯定不能让用户自己去手动修改吧,那么解决方法如下: 

 1 public static void SetAlignment()
 2  {
 3        //获取系统是以Left-handed(true)还是Right-handed(false)
 4         var ifLeft = SystemParameters.MenuDropAlignment;
 5 
 6          if (ifLeft)
 7           {
 8                 // change to false
 9                 var t = typeof(SystemParameters);
10                 var field = t.GetField("_menuDropAlignment", BindingFlags.NonPublic | BindingFlags.Static);
11                 field.SetValue(null, false);
12 
13                 ifLeft = SystemParameters.MenuDropAlignment;
14          }
15  }
View Code

参考:http://stackoverflow.com/questions/18113597/wpf-handedness-with-popups

      和https://social.msdn.microsoft.com/Forums/vstudio/en-US/19ef3d33-01e5-45c5-a845-d64f9231001c/popup-positioningalignments?forum=wpf

        http://www.tomshardware.com/forum/37096-63-popups-menus-wrong-side

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值