Изменение ObservableCollection <T>, объявленного как ресурс во время выполнения - PullRequest
1 голос
/ 25 февраля 2009

У меня есть группа ObservableCollections, которые заполняются из базы данных. Есть хороший шанс, что в течение срока службы приложения эти коллекции будут расти, и мне нужно, чтобы они обновлялись каждые 30 секунд или около того.

Я объявляю коллекции как ресурсы в объединенных словарях в App.xaml. Я могу получить эти коллекции в порядке, используя метод Application.FindResource (), но любые изменения, внесенные в результирующую коллекцию, не отражаются при повторном вызове FindResource. Может быть, я наивен, чтобы думать, что это было бы так.

Я прав или нет?

1 Ответ

0 голосов
/ 25 февраля 2009

Понял!

значение ресурса может быть установлено через Application.Current.Resources [ключ].

Так что в моем примере, если кто-то столкнется с этой проблемой, я сделаю что-то вроде

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
...