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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM