Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# winrt中是否有itemcontainergenerator.status属性?_C#_Xaml_Winrt Xaml - Fatal编程技术网

C# winrt中是否有itemcontainergenerator.status属性?

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

我试图从列表视图中突出显示正在播放的歌曲,但遇到了一些麻烦。通常,lvicurrent为空。这是我的密码

    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继承的类,几乎可以正常工作了