首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ListCollectionView分组多次

ListCollectionView分组多次
EN

Stack Overflow用户
提问于 2013-06-22 08:21:48
回答 2查看 508关注 0票数 1

我有一个用户控件,当我单独运行它的工作原理时,它实现了ListCollectionView,但是当我把它放到另一个userControl中时,就是动态创建选项卡Dynamic tabControl,真正的问题是当我创建第二个选项卡时,分组发生了2次,如果我创建了第三个选项卡E 211,那么E 112分组发生了3次E 213,诸如此类。我已经引用了链接http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF来创建动态选项卡,然后

代码语言:javascript
复制
Public obj As ThumbnailImages

    Private Function AddTabItem() As TabItem
        Dim count As Integer = _tabItems.Count

        ' create new tab item
        Dim tab As New TabItem()

        tab.Header = String.Format("tab{0}", count)
        tab.Name = String.Format("tab{0}", count)
        tab.HeaderTemplate = TryCast(tabDynamic.FindResource("TabHeader"), DataTemplate)


        obj = New ThumbnailImages

        ' add controls to tab item, 
        tab.Content = obj
        obj.SetDataContext(ImageCollection)

        _tabItems.Insert(count - 1, tab)

        Return tab
    End Function

下面的代码在我的缩略图用户控制中

代码语言:javascript
复制
 Public Sub GroupAndSortImages()

        myCollectionView = Nothing

        myCollectionView = CType(CollectionViewSource.GetDefaultView(Me.DataContext), ListCollectionView)

        myCollectionView.GroupDescriptions.Add(New PropertyGroupDescription("Name"))

        myCollectionView.SortDescriptions.Add(New SortDescription("Name[0]", ListSortDirection.Ascending))

        MyList.ItemsSource = myCollectionView
    End Sub

    Public Sub SetDataContext(ByVal datacontext As Object)
        Me.DataContext = datacontext
        GroupAndSortImages()
    End Sub

在上面的代码中,我将为我的缩略图usercoontrol创建新对象,当新选项卡被单击时,当它第一次运行时,会运行良好,如下所示

当我单击第二个选项卡时,它的分组时间为两次,如下所示,此外,这个第二组也发生在第一个选项卡中,尽管我使用了。

代码语言:javascript
复制
obj = New ThumbnailImages

在AddtabItem方法中

我调试了很长时间,但找不到原因。提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2013-06-24 06:33:13

或者可以像阿南德上面回答的那样做到这一点,也可以简单地通过

认证前清除GroupDexcription

代码语言:javascript
复制
Dim myCollectionView As ListCollectionView

 myCollectionView = CType(CollectionViewSource.GetDefaultView(Me.DataContext), ListCollectionView)

            myCollectionView.GroupDescriptions.Clear()

            myCollectionView.GroupDescriptions.Add(New PropertyGroupDescription("Name"))

            myCollectionView.SortDescriptions.Add(New SortDescription("Name[0]", ListSortDirection.Ascending))
票数 1
EN

Stack Overflow用户

发布于 2013-06-22 13:42:02

它被分组了两次/更多次,因为您已经添加了两次/多次相同的PropertyGroupDescription

定义一个类级变量来保存PropertyGroupDescription,如下所示

代码语言:javascript
复制
private PropertyGroupDescription _NamePropertyGroupDescription = new PropertyGroupDescription("Name");

然后,在添加PropertyGroupDescription之前,只需检查它是否已经添加了

代码语言:javascript
复制
if (myCollectionView.GroupDescriptions.Contains(_NamePropertyGroupDescription) == false)
{
    myCollectionView.GroupDescriptions.Add(_NamePropertyGroupDescription);
}

对不起,代码在C#中,但我相信你会明白它背后的想法的。

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

https://stackoverflow.com/questions/17248757

复制
相关文章

相似问题

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