UWP StartBringIntoView не работает в Page_Loaded - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть 3 BladeItem s на другой странице.И я хочу перейти от MainPage к этой странице и отобразить запрошенный BladeItem.Но это не работает.

Сначала я подумал, что это потому, что страница не была загружена.Поэтому я положил его в Page_Loaded.Тем не менее, он все еще работает.Почему это так?

    private void Page_Loaded(object sender, RoutedEventArgs e)
    {
        TitleBarHelper.SetDarkTitleBar();
        Window.Current.SetTitleBar(AppTitleBar);
        UpdateTitleBarLayout(Windows.ApplicationModel.Core.CoreApplication.GetCurrentView().TitleBar);

        FullMediaControl.Update();
        SetMusic(MediaHelper.CurrentMusic);
        FullPlaylistControl.ScrollToMusic(MediaHelper.CurrentMusic);

        if (MusicInfoRequestedWhenUnloaded)
        {
            MusicPropertyBladeItem.StartBringIntoView();
            MusicInfoRequestedWhenUnloaded = false;
        }
        else if (LyricsRequestedWhenUnloaded)
        {
            LyricsBladeItem.StartBringIntoView();
            LyricsRequestedWhenUnloaded = false;
        }
    }

Код исходной страницы здесь .На этой странице можно перемещаться, используя элемент «Показать тексты песен» или «Информация о музыке» в MenuFlyout в правой нижней части кнопки «Далее».

И на самом деле FullPlaylistControl.ScrollToMusic в приведенном выше коде также не работает.Он просто прокручивается в строку за ListView.Я думаю, что они могут быть по той же причине.

1 Ответ

1 голос
/ 26 сентября 2019

Это документация для StartBringIntoView .

В соответствии с инструкциями в документации, этот метод возможен только в том случае, если элемент управления отображается в визуальном дереве, поэтому необходимо изменитьэто когда вы вызываете метод.

Если вы хотите, чтобы MusicPropertyBladeItem.StartBringIntoView() работал, вам нужно вызвать его в событии MusicPropertyBladeItem_Loaded.По той же причине вам нужно вызвать ScrollToMusic, когда загружено FullPlaylistControl.

Page_Loaded означает только то, что страница загружена, но это не значит, что элементы управления были отрисованы.

Лучшие негодяи.

...