Bonjour,
Je voudrais savoir comment mettre en place un binding vers un userControl depuis un Form.
Mon formulaire a un référence vers mon objet modèle qui implémente INotifyPropertyChanged.
Lorsque des modifications sont apportées à mon modèle, je lève l'évènement Propertychanged.
Et je voudrais répercuter ces modifications dans un usercontrol de mon formulaire.
Voici le code, provenant de mon formulaire, de binding que je voudrais mettre en place:
Une partie du code de mon modèle:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Binding binding = new Binding(nameof(userControl.Data),Model,nameof(Model.Data)); binding.ControlUpdateMode = ControlUpdateMode.OnPropertyChanged; binding.DataSourceUpdateMode = DataSourceUpdateMode.Never; userControl.DataBindings.Add(binding);
Une partie du code de mon userControl
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 .... RaisePropertyChanged(()=>Data); } public MonSousModel Data { get{return _data;} }
La classe MonSousModel n'est qu'un simple Dto
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 private MonSousModel _data; public MonSousModel Data { set{_data=value;} get{return _data;} }
Mais, à l’exécution j'obtiens l'erreur "impossible de mettre en forme la valeur avec le type souhaité".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class MonSousModel { public string lieu{get;set;} public int NbHabitants{get;set;} }
Je ne comprends pas pourquoi? Le binding doit-il forcement être un type simple (string, int,...)?
A savoir que l'instance de MonSousModel change au cours du processus c'est pourquoi je voudrais utiliser le Binding et non une bindingSource.
Merci pour vos éclaircissements.
Partager