2009-02-25 65 views
1

我有一堆從數據庫填充的ObservableCollections。在應用程序生命週期中,這些集合會增長,我需要它們每30秒左右更新一次。修改ObservableCollection <T>在運行時聲明爲資源

我將集合聲明爲App.xaml中合併字典中的資源。我可以使用Application.FindResource()方法很好地獲取這些集合,但是當我再次調用FindResource時,對結果集合所做的任何更改都不會反映出來。也許我很天真認爲這將是事實。

我是對還是錯?

+0

您可以分享您使用的XAML和C#代碼嗎? – 2009-02-25 15:32:42

回答

0

Got it!

資源值可以通過Application.Current.Resources [key]來設置。

所以在我的例子中,任何人都應該遇到這個問題,我會這樣做。

MyObservableCollection coll1 = Application.FindResource("resourceName") as MyObservableCollection 
foreach(Item i in coll1) 
{ 
    if(somecondition){i.someProperty == someValue;} 
} 
//coll2 does NOT reflect the above change!!! 
MyObservableCollection coll2 = Application.FindResource("resourceName") as MyObservableCollection; 
Application.Current.Resources["resourceName"] = coll1; 
//coll3 DOES reflect the above change 
MyObservableCollection coll3 = Application.FindResource("resourceName") as MyObservableCollection