2014-02-24 50 views
0

這是我第五次更改此代碼,並且每當它在Windows 7上看起來正確時,彈出窗口在Windows 8上就會關閉,反之亦然。我不知道這是否是調用或其他的順序。在Windows 7上的彈出窗口位置錯誤,在Windows 8上正確

Button b = (Button)sender; 
Popup1.Placement = PlacementMode.Left; 
Popup1.PlacementTarget = b; 
Popup1.HorizontalOffset = b.RenderSize.Width; //original button shall be covered with popup 
Popup1.VerticalOffset = 0; 
Popup1.IsOpen = true; 

它總是水平偏移。我也試過Popup1.HorizontalOffset = b.ActualWidth;

回答

0

在windows 8下有一個影響彈出窗口放置的平板設置,你可以設置它來獲得另一個PlacementMode。它被稱爲手杖,並應確保彈出窗口不會出現在用戶的手下。我沒有這個問題還沒有,但也有其他人誰了:

w8 default tablet settings conflicts with WPF layout

windows 8 popup location

WPF Handedness with Popups

尤其是最後一個環節能夠解決您的問題。

+0

謝謝,這似乎是原因,但鏈接我見過的最髒的修復! – Daniel

0

我認爲這解決了它:

我設置彈出式展示位置爲自定義。 初始化後,我加入

Popup1.CustomPopupPlacementCallback += popupFix; 

CustomPopupPlacement[] popupFix(Size popupSize, Size targetSize, Point p) 
{ 
    p.Y = p.Y - 12; //my fake shadow offset 
    p.X = p.X - 12; //my fake shadow offset 
    return new CustomPopupPlacement[] { 
    new CustomPopupPlacement(p, PopupPrimaryAxis.Horizontal) 
    }; 
} 

,風俗Horizo​​ntalOffset工作後。