salut à tous
1) lien Control _ObservableCollection :
WPF on fait un lien (Binding two way) entre un Control et une collection (ObservableCollection ).
2) mais comment on fait un Binding two way entre deux ObservableCollection ?
salut à tous
1) lien Control _ObservableCollection :
WPF on fait un lien (Binding two way) entre un Control et une collection (ObservableCollection ).
2) mais comment on fait un Binding two way entre deux ObservableCollection ?
Ton objectif est de :
1. Mettre à jour le contenu d'un observableCollection selon une seconde (add/remove item) ?
2. Mettre à jour les propriétés des objets de tes collection (set sur item spécifique) ?
Dans tous les cas, je pense qu'il te faudra un objet manager pour ce traitement, référençant tes 2 listes et étant abonné aux événements...
L'option B serait d'avoir la même référence pour les 2 Collections, mais je ne sais pas si cela s'applique à ton contexte...
De plus il faut tenir compte des instances différentes pour un même objet (ou alors c'est la même référence dans les deux listes et alors je ne vois pas l'intérêt d'être notifié, vu que le 2 sera mis à jour par référence), et donc prévoir un code unique pour identifier l'item à chaque fois je pense.
Quelque chose dans ce goût là je dirais
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 public class Manager<T> { private ObservableCollection<T> coll1; private ObservableCollection<T> coll2; public ObservableCollection<T> Collection1 { get { return coll1; } set { if(coll1 != null) { coll1.CollectionChanged -= Collection_Changed; coll1.PropertyChanged -= Property_Changed_Coll1; } coll1 = value; if(coll1 != null) { coll1.CollectionChaned += Collection_Changed; coll1.PropertyChanged += Property_Changed_Coll1; } } } //IDEM POUR LA PROP Collection2 private void Collection_Changed(object sender, NotifyCollectionChangedEventArgs ea) { //Traitement de la mise à jour de la liste selon sender si liste cible non null if(sender == coll1 && coll2 != null) { //Mise à jour de Coll2 selon infos dans Coll1 } else if(sender == coll2 && coll1 != null) { //Mise à jour de Coll1 selon infos dans Coll2 } } private void Property_Changed_Coll1(Object sender, PropertyChangedEventArgs ea) { UpdateProperty(coll2, sender as T, ea); } private void Property_Changed_Coll2(Object sender, PropertyChangedEventArgs ea) { UpdateProperty(coll1, sender as T, ea); } ///Met à jour l'entité donné sur la collection cible avec les infos de changements private void UpdateProperty(ObservableCollection<T> collectionToUpodate, T entity, PropertyChangedEventArgs ea) { //on a toutes les billes pour mettre l'entité à jour dans la collection cible //Rechercher l'entité dans la collection d'après l'identifiant dans entity. //Ne pas mettre à jour entity directement, il vient de la collection source !! } }
ha oui
donnes moi ton avis sur l'idée suivante :
je voudrais utiliser une listBox (WPF) comme support visuel d'un Graph (plusieurs nœuds, plusieurs liens).
je ne veux pas utiliser une TreeView.
je voudrais exprimer les liens entre les tables (le mapping relationnel de ma database).
je crée une Table Relation qui doit être à l'écoute des tables de mon DataSet (c'est là ou j'utilise ton Manager), mais pas seulement, cette Table doit exister pour permettre l'ajout de relations entre mes objets , des relations qui ne doivent pas être uniquement relationnelle.
Exemple :
deux Tables :
Table Ville.
Table Établissement.
bien sure une relation naturelle entre ces deux Tables permettra de dire ville1 contient etablissement15.
mais ma Table Relation me permettra de dire : etablissment12 est lié à etablissement36 : relation =relation commerciale.
le faite de faire un Manager pour bien lier la grande TableRelation et les liens relationnelle ainsi que les lien de type "commerciale" ou "évènement culturel" ou tout ce que nous voulons, cela permettra :
DataBinding : ListBox <->TableRalation
Manager : TableRelation<->DataSet
donnes moi ton avis :
bizzar , fou ou faisable?
Si on considère Relation comme étant un objet en lui même, référençant deux Etablissements avec type d'activité, une collection de Relation à surveiller directement ne serait pas plus simple ? Et sur maj de la collection, update des éléments de l'UI ?
Mais honnêtement je ne sais pas trop quoi en penser
bon
merci pour le Manager.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager