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
只表示页面加载完毕,并不表示控件已经渲染完成
最好的衣服。
我在另一页中有 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
只表示页面加载完毕,并不表示控件已经渲染完成
最好的衣服。