【问题标题】:How to position a popup control in a Windows Store App relative to a button?如何在 Windows 应用商店应用程序中相对于按钮定位弹出控件?
【发布时间】:2017-06-23 20:53:51
【问题描述】:

单击 Windows 应用商店应用程序中的按钮后,Popup 控件应显示在按钮附近。

使用VerticalOffsetHorizontalOffset 属性(== 相对于左上角的坐标)定位Popup 没有问题,但是我如何获得按钮相对于屏幕的位置来计算偏移量正确吗?

按钮位于页面上的某个位置,并且相对于屏幕没有固定的位置(例如,当放置在滚动视图中时等)。如何获取按钮的坐标?

【问题讨论】:

    标签: c# popup windows-store-apps


    【解决方案1】:

    您需要使用这些调用:UIElement.TransformToVisualGeneralTransform.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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多