C# winrt中是否有itemcontainergenerator.status属性?
我试图从列表视图中突出显示正在播放的歌曲,但遇到了一些麻烦。通常,lvicurrent为空。这是我的密码C# winrt中是否有itemcontainergenerator.status属性?,c#,xaml,winrt-xaml,C#,Xaml,Winrt Xaml,我试图从列表视图中突出显示正在播放的歌曲,但遇到了一些麻烦。通常,lvicurrent为空。这是我的密码 private void highlightItem(String focused) { //songlistView.ItemContainerGenerator.ItemsChanged????; ListViewItem lvicurrent = new ListViewItem(); if (lviPrevious
private void highlightItem(String focused)
{
//songlistView.ItemContainerGenerator.ItemsChanged????;
ListViewItem lvicurrent = new ListViewItem();
if (lviPrevious != null)
{
lviPrevious.Background = new SolidColorBrush();
}
if (focused.Equals("songListview"))
{
lvicurrent = songlistView.ItemContainerGenerator.ContainerFromIndex(songIndex) as ListViewItem;
lviPrevious = lvicurrent;
lvicurrent.Background = new SolidColorBrush(Colors.LightGreen);
}
else if (focused.Equals("playListview"))
{
lvicurrent = playlistView.ItemContainerGenerator.ContainerFromIndex(songIndex) as ListViewItem;
lviPrevious = lvicurrent;
lvicurrent.Background = new SolidColorBrush(Colors.LightGreen);
}
}
private void StatusChangedEventHandler(object sender, EventArgs e)
{
}
我在互联网上唯一能找到的就是等待状态完成,但据我所知,winrt中没有状态属性
我的另一个问题是,超过1首歌曲显示为绿色。我不知道为什么,可能是因为它是一个虚拟化的stackpanel。。。但人们会认为这不会影响stackpanel中当前看不到的歌曲。这是我发布应用程序之前最不需要解决的问题。如果ItemConatineGenerator.ContainerFromIndex()返回null,则表示该索引处的容器尚未生成(即,该项目的容器仍处于虚拟化状态) 如果您有一个较短的集合,您可能可以使用StackPanel作为ListView的ItemsPanel,而不是VirtualzingStackPanel(默认设置)。使用StackPanel,容器将不会被虚拟化。如果你有一个较长的集合,虚拟化将更好地提高你的应用程序的性能
看起来您的场景要求您“突出显示”某个项目索引的容器。如果要添加“突出显示”效果,样式选择器听起来很有希望。您也可以通过子类化ListView/ListViewItem来实现这一点。您是否考虑过为您的场景重新调整选择的概念?ListView继承自Selector并支持一些SelectionModes。您可以使用选择视觉状态来实现“突出显示”效果。这似乎是一种不好的方法,我现在使用的是从StyleSelector继承的类,几乎可以正常工作了