Je travaille avec VS2008 Beta 2 et le framework 3.5.
Je fais du binding qui fonctionne bien, mais j'ai un cas que je n'arrive pas à résoudre.
Je vous donne d'abord le cas qui fonctionne bien, et ensuite mon problème.
CAS QUI FONCTIONNE :
J'ai une liste de cette classe
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class CFctBase : INotifyPropertyChanged { public object Value { get; set; } .... }
Je binde un élément de cette liste à un controle de la manière suivante:
Jusque là Value est instantié comme un type string, tout va bien.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void test(CFctBase o_fct) { Binding o_binding = o_binding = new Binding("Value"); my_label.SetBinding(Label.ContentProperty, o_binding); my_label.DataContext = o_fct; }
Lorsque je mets à jour l'attribut Value de mon instance o_fct, my_label se met bien à jour tout va bien.
CAS QUI NE FONCTIONNE PAS:
Maintenant, je voudrais faire la même chose mais Value est un type custom.
Il est de type CommProtocol.IMultiArray.
Ce type possède un attribut MultiArray qui renvoie une collection.
Bien sur, maintenant je binde Value sur un listview, puisque c'est une collection et là tout va bien:
Cela fonctionne mais dans ce cas, mon listview n'est pas rafraichi si Value change.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Binding o_binding = new Binding(); lvMain.SetBinding(ListView.ItemsSourceProperty, o_binding); lvMain.DataContext = (o_fct.Value as CommProtocol.IMultiArray).MultiArray;
Ce que je voudrais c'est faire quelque chose de ce style :
Mais bien sur ça ne fonctionne pas, mais je ne sais pas trop comment contourner le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Binding o_binding = new Binding("MultiArray"); lvMain.SetBinding(ListView.ItemsSourceProperty, o_binding); lvMain.DataContext = o_fct.Value as CommProtocol.IMultiArray;
Passer par un ODP ?
Merci d'avance pour vos idées.
Partager