2009-02-25 6 views
1

J'ai un groupe de ObservableCollections qui sont remplis à partir d'une base de données. Il y a une bonne chance que pendant la durée de vie de l'application, ces collections augmentent et j'ai besoin qu'elles soient mises à jour toutes les 30 secondes environ.Modification d'une ObservableCollection <T> déclarée en tant que ressource au moment de l'exécution

Je déclare les collections en tant que ressources dans les dictionnaires fusionnés dans App.xaml. Je peux récupérer ces collections à l'aide de la méthode Application.FindResource(), mais les modifications apportées à la collection résultante ne sont pas répercutées lorsque j'appelle à nouveau FindResource. Peut-être que je suis naïf de penser que ce serait le cas.

Ai-je raison ou tort?

+0

Pouvez-vous s'il vous plaît partager le code XAML et C# que vous utilisez? –

Répondre

0

Got it!

Une valeur de ressources peut être définie via Application.Current.Resources [clé]. Donc, dans mon exemple, si quelqu'un rencontre ce problème, je fais quelque chose comme.

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 
Questions connexes