单击Windows Store App中的按钮后,Popup
控件应显示在按钮附近。
定位Popup
使用其VerticalOffset
和HorizontalOffset
属性(==相对于左上角的坐标)没问题,但是如何获得按钮相对于屏幕的位置以正确计算偏移量呢?
该按钮位于页面上的某个位置,并且相对于屏幕没有固定的位置(例如,当放置在滚动视图中时)。如何获得按钮的坐标?
您需要使用以下调用:UIElement.TransformToVisual和GeneralTransform.TransformPoint。不幸的是,自从我这样做已经有一段时间了,所以我无法给出这些调用的确切功能的更多细节。
下面的代码找出按钮的左上角位置,然后在此处打开弹出窗口。您可能需要根据需要调整位置。
private void btnClickMe_Click(object sender, RoutedEventArgs e)
{
Popup popUp = new Popup();
// TODO: Add your elements to the popup here...
// open the popup at the same coordinates as the button
var point = CalcOffsets((UIElement)sender);
popUp.HorizontalOffset = point.X;
popUp.VerticalOffset = point.Y;
popUp.IsOpen = true;
}
private Point CalcOffsets(UIElement elem)
{
// I don't recall the exact specifics on why these
// calls are needed - but this works.
var transform = elem.TransformToVisual(this);
Point point = transform.TransformPoint(new Point(0, 0));
return point;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句