首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >winrt中是否有itemcontainergenerator.status属性?

winrt中是否有itemcontainergenerator.status属性?
EN

Stack Overflow用户
提问于 2013-05-24 10:59:45
回答 1查看 382关注 0票数 2

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

代码语言:javascript
复制
    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中看不到的歌曲。在发布应用程序之前,这是我需要解决的最后一件事。

EN

回答 1

Stack Overflow用户

发布于 2013-05-27 01:36:45

如果ItemConatinerGenerator.ContainerFromIndex()返回null,则表示该索引处的容器尚未生成(即该项的容器仍处于虚拟化状态)。

如果您有一个很短的集合,那么您可以使用StackPanel作为ListView的ItemsPanel,而不是VirtualizingStackPanel (默认)。使用StackPanel,容器将不会被虚拟化。如果你有一个更长的集合,虚拟化将会对你的应用程序的性能更好。

您的场景似乎要求您“突出显示”某个项目索引的容器。如果你正在添加一个“高亮”效果,StyleSelector听起来很有前途。您还可以通过将ListView/ListViewItem子类化来实现此目的。您是否考虑过在您的场景中重新使用选择的概念?ListView继承自选择器,并支持一些SelectionModes。您可以使用选择视觉状态来实现您的“高亮”效果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16727055

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档