我有一堆从数据库填充的 ObservableCollections。很有可能在应用程序的生命周期中这些集合会增长,我需要它们每 30 秒左右更新一次。
我将集合声明为 App.xaml 中合并字典中的资源。我可以使用 Application.FindResource() 方法很好地获取这些集合,但是当我再次调用 FindResource 时,我对结果集合所做的任何更改都不会反映出来。也许我天真地认为会是这样。
我是对还是错?
我有一堆从数据库填充的 ObservableCollections。很有可能在应用程序的生命周期中这些集合会增长,我需要它们每 30 秒左右更新一次。
我将集合声明为 App.xaml 中合并字典中的资源。我可以使用 Application.FindResource() 方法很好地获取这些集合,但是当我再次调用 FindResource 时,我对结果集合所做的任何更改都不会反映出来。也许我天真地认为会是这样。
我是对还是错?
知道了!
可以通过 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