我有一个用户控件,当我单独运行它的工作原理时,它实现了ListCollectionView,但是当我把它放到另一个userControl中时,就是动态创建选项卡的Dynamic tabControl,真正的问题是当我创建第二个选项卡时,分组发生了2次,如果我创建了第三个选项卡E 211,那么E 112分组发生了3次E 213,诸如此类。我已经引用了链接http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF来创建动态选项卡,然后
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下面的代码在我的缩略图用户控制中
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创建新对象,当新选项卡被单击时,当它第一次运行时,会运行良好,如下所示

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


我调试了很长时间,但找不到原因。提前谢谢。
发布于 2013-06-24 06:33:13
或者可以像阿南德上面回答的那样做到这一点,也可以简单地通过
认证前清除GroupDexcription
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))发布于 2013-06-22 13:42:02
它被分组了两次/更多次,因为您已经添加了两次/多次相同的PropertyGroupDescription。
定义一个类级变量来保存PropertyGroupDescription,如下所示
private PropertyGroupDescription _NamePropertyGroupDescription = new PropertyGroupDescription("Name");然后,在添加PropertyGroupDescription之前,只需检查它是否已经添加了
if (myCollectionView.GroupDescriptions.Contains(_NamePropertyGroupDescription) == false)
{
myCollectionView.GroupDescriptions.Add(_NamePropertyGroupDescription);
}对不起,代码在C#中,但我相信你会明白它背后的想法的。
https://stackoverflow.com/questions/17248757
复制相似问题