UWP Position абсолютное всплывающее окно - PullRequest
0 голосов
/ 26 ноября 2018

У меня есть всплывающее окно.При нажатии кнопки в GridView появится всплывающее окно.Я установил VerticalOffset и HorizontalOffset для всплывающих окон.Но у меня проблема, когда я прокручиваю GridView всплывающее окно не движется.Я могу установить абсолютное значение всплывающего окна?

1 Ответ

0 голосов
/ 26 ноября 2018

Как сказано в документации , свойства Offset устанавливают положение относительно окна приложения:

Получает или задает расстояние между левой стороной окна приложения.и левая сторона всплывающего окна.

Это означает, что позиция установлена ​​абсолютно относительно окна и не будет обновляться автоматически при прокрутке GridView.Вместо этого вам придется обновить его вручную, наблюдая за событиями просмотра прокрутки.Сначала используйте VisualTreeHelper, чтобы найти 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 или scrollViewer.ViewChanging событие и обновите позицию всплывающего окна, как вы считаете нужным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...