【问题标题】:Modifying an ObservableCollection<T> declared as a resource at runtime在运行时修改声明为资源的 ObservableCollection<T>
【发布时间】:2009-02-25 15:25:54
【问题描述】:

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

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

我是对还是错?

【问题讨论】:

  • 能否分享一下您正在使用的 XAML 和 C# 代码?

标签: wpf observablecollection


【解决方案1】:

知道了!

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 2019-01-03
    相关资源
    最近更新 更多