这是我第5次更改此代码时,每当它在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 :(得分:0)
在Windows 8下有一个平板电脑设置会影响弹出窗口的放置,您可以将其设置为另一个放置模式。它被称为Handedness,应确保弹出窗口不会出现在用户手中。我还没有遇到这个问题,但还有其他人有:
w8 default tablet settings conflicts with WPF layout
尤其是最后一个链接可以解决您的问题。
答案 1 :(得分:0)
我认为这解决了它:
我将Popup展示位置设置为自定义。 在init之后我添加了
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)
};
}
在该自定义HorizontalOffset工作之后。