修改在运行时声明为资源的ObservableCollection <t> </t>

时间:2009-02-25 15:25:55

标签: wpf observablecollection

我有一堆ObservableCollections从数据库中填充。很有可能在应用程序生命周期中这些集合会增长,我需要每30秒更新一次。

我将集合声明为App.xaml中合并字典中的资源。我可以通过使用Application.FindResource()方法获取这些集合,但是当我再次调用FindResource时,我不会反映对结果集合所做的任何更改。也许我很天真地认为情况就是这样。

我是对还是错?

1 个答案:

答案 0 :(得分:0)

知道了!

可以通过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