2013-06-22 30 views
1

我有實現了用戶控件的ListCollectionView當我運行這個seperately其幹活很好,但是當我把這個在另一用戶控件是動態的TabControl它創建標籤動態,真正的問題是當我創建第二個選項卡組發生2次,如果我創建第三個標籤然後組發生3次,像這樣的。我已經referneced鏈接http://www.codeproject.com/Articles/493538/Add-Remove-Tabs-Dynamically-in-WPF 下面的代碼創建動態選項卡,然後的ListCollectionView分組Multipletimes

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當新標籤點擊時當它第一次工作正常時如下所示

First time ,first tab loading my thumbnail usercontrol 當我點擊第二個選項卡,如下面andalso在addtion到所示的其分組兩個時間這第二分組也發生在第一個選項卡,即使我已經在使用

obj = New ThumbnailImages 

AddtabItem方法

Grouping two times Grouping three times

我調試長,但未能查出病因。提前致謝。

回答

0

它被分組兩次/多次,因爲您已經兩次/多次添加相同的PropertyGroupDescription

定義一個類級別的變量來保存PropertyGroupDescription像下面

private PropertyGroupDescription _NamePropertyGroupDescription = new PropertyGroupDescription("Name"); 

,然後加入PropertyGroupDescription只是檢查它是否是之前已經添加

if (myCollectionView.GroupDescriptions.Contains(_NamePropertyGroupDescription) == false) 
{ 
    myCollectionView.GroupDescriptions.Add(_NamePropertyGroupDescription); 
} 

對不起,該代碼是在C#但我相信你會明白這一點。

+0

之前完成,感謝YOUE回覆,由我通過在分配'myCollectionView.GroupDescriptions.Clear()之前清除** GroupDescription **來實現的方式' – Selva

1

它要麼可以通過阿南德說,實現上述回答,或者它可以簡單地通過

清除GroupDexcription assgning

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)) 
相關問題