0

我有一些集合,實現INotifyCollectionChanged。UI不結合INotifyCollectionChanged

public sealed class GroupCollection : INotifyCollectionChanged, IList<Group> 
{ 
    //... 
    public event NotifyCollectionChangedEventHandler CollectionChanged; 

    private void OnCollectionChanged(NotifyCollectionChangedEventArgs e) 
    { 
     if (CollectionChanged != null) 
     { 
      CollectionChanged(this, e); 
     } 
    } 
    //... 
} 

它在XAML中使用

 <CollectionViewSource x:Name="groupedItemsViewSource" Source="{Binding Groups}"/> 

然後在xaml.cs

 this.DefaultViewModel["Groups"] = groups.GroupCollection; 

收集項目顯示就好了。但用戶界面不會訂閱CollectionChangedCollectionChanged被觸發不會自我更新。也許我需要實現更多的接口來使UI控件訂閱事件?

P.S.因爲編譯器說,這「不是Windows運行時的界面」我不能使用的ObservableCollection。

回答

0

下使用ObservableCollection使用默認的網格應用模板時正常工作對我來說:

using System.Collections.ObjectModel; 
... 
class MyOC : ObservableCollection<SampleDataGroup> { }; 
... 
var oc = new MyOC(); 
string id = "title1"; 
oc.Add(new SampleDataGroup(id, id, id, "", id)); 
id = "title2"; 
oc.Add(new SampleDataGroup(id, id, id, "", id)); 
this.DefaultViewModel["Groups"] = oc; 

我猜想,你可以做你的項目類似的東西:

using System.Collections.ObjectModel; 
... 
public sealed class GroupCollection : ObservableCollection<Group> 
{ 
... 
+0

我做不到這個。 'GroupCollection'位於另一個項目中(項目類型爲「Windows運行時組件」)。 「Windows運行時組件」中的公共類無法實現「ObservableCollection」。如果我嘗試,我得到的編譯錯誤「'ObservableCollection'不是Windows運行時的界面」。 – b1n0m 2013-03-06 16:54:46