UWP StartBringIntoView 在 Page_Loaded 中不工作

UWP StartBringIntoView not working in Page_Loaded

我在另一页中有 3 个 BladeItem。我想从 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;
        }
    }

源页面代码是 here。可以使用右下角更多按钮 MenuFlyout 中的 "Show Lyrics" 或 "Music Info" 项导航此页面。

实际上上面代码中的 FullPlaylistControl.ScrollToMusic 也不起作用。它只是滚动到 ListView 中的一行。我想他们可能是同一个原因。

这是 StartBringIntoView 的文档。

根据文档中的说明,该方法只有在控件呈现在可视化树上时才有可能,所以调用该方法时需要修改。

你想让MusicPropertyBladeItem.StartBringIntoView()工作,你需要在MusicPropertyBladeItem_Loaded事件中调用它。同理,加载FullPlaylistControl时需要调用ScrollToMusic

Page_Loaded只表示页面加载完毕,并不表示控件已经渲染完成

最好的衣服。