C# UWP StartBringIntoView在加载的页面中不工作
我在另一页有3个C# UWP StartBringIntoView在加载的页面中不工作,c#,uwp,win-universal-app,C#,Uwp,Win Universal App,我在另一页有3个BladeItems。我想从MainPage导航到该页面,并查看请求的BladeItem。但它不起作用 我最初认为这是因为页面尚未加载。所以我把它放进了加载的页面。然而,它现在仍在发挥作用。为什么呢 private void Page_Loaded(object sender, RoutedEventArgs e) { TitleBarHelper.SetDarkTitleBar(); Window.Current.SetTitle
BladeItem
s。我想从MainPage
导航到该页面,并查看请求的BladeItem
。但它不起作用
我最初认为这是因为页面尚未加载。所以我把它放进了加载的页面。然而,它现在仍在发挥作用。为什么呢
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;
}
}
源代码页是。可以使用右下角“更多”按钮的菜单中的“显示歌词”或“音乐信息”项导航此页面
实际上,上面代码中的FullPlayControl.ScrollToMusic
也不起作用。它只是滚动到列表视图中的一行。我想它们可能是相同的原因。这是的文档
根据文档中的说明,此方法仅在控件呈现在可视化树上时才可行,因此您需要在调用该方法时对其进行修改
如果希望MusicPropertyBladeItem.StartBringIntoView()
工作,则需要在加载的MusicPropertyBladeItem
事件中调用它。出于同样的原因,在加载FullPlayControl
时,需要调用ScrollToMusic
Page\u Loaded
仅表示页面已加载,但并不表示控件已呈现
最好的衣服。谢谢。使用加载的事件适用于BladeItem
s。但它似乎不适用于ScrollToMusic
,可能是因为我使用了ListView.ScrollIntoView
?嗨,ScrollToMusic
应该是您自己的方法,本质上是ListView.ScrollIntoView()
。因此,您需要在ListView.Loaded
事件中调用它。是的,它在Loaded
事件中,但仍然不工作。您可以从底部的代码中看到,我认为您可以调试并查看ListView\u Loaded
中的scrolltomusicrequestedwhenunload
是否为null
。但不排除渲染过程中可能出现的异常。毕竟,ScrollIntoView
不会返回值,也不会报告错误。我创建了一个新的ListView并生成了200个条目。在ListView.Loaded事件中,我可以成功调用ScrollIntoView
。您还可以创建一个新项目进行测试。它不是null,但我发现SongsListView.ContainerFromItem(ScrollTomusicRequestedWhenUnload)
给我null。它似乎找不到它,但我确实在列表视图中找到了它。为什么?