UWP位置绝对弹出式窗口

时间:2018-11-26 08:45:10

标签: .net xaml uwp

我有弹出窗口。  在GridView中单击按钮时,将显示弹出窗口。我将VerticalOffsetHorizontalOffset设置为弹出窗口。 但是我有问题,当我滚动GridView时弹出窗口没有移动。 我可以设置绝对弹出窗口吗?

1 个答案:

答案 0 :(得分:1)

正如documentation所说,Boundable属性设置相对于应用程序窗口的位置:

  

获取或设置应用程序左侧之间的距离   窗口和弹出窗口的左侧。

这意味着位置是相对于窗口的绝对位置,并且在滚动Offset时不会自动更新。相反,您必须通过观察滚动查看器事件来手动更新它。首先使用GridViewVisualTreeHelper内找到ScrollView

GridView

您可以像这样使用此辅助方法:

public static ScrollViewer FindScrollViewer(DependencyObject d)
{
    if (d is ScrollViewer) return d as ScrollViewer;

    for (int i = 0; i < VisualTreeHelper.GetChildrenCount(d); i++)
    {
        var child = VisualTreeHelper.GetChild(d, i);

        var result = FindScrollViewer(child);
        if (result != null) return result;
    }
    return null;
}

现在附加var scrollViewer = FindScrollViewer(MyGridView); scrollViewer.ViewChanged事件,并根据需要更新弹出位置。