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:
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 modèle:
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;}
}
Une partie du code de mon userControl
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;}
}
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
 
public class MonSousModel
{
  public string lieu{get;set;}
  public int NbHabitants{get;set;}
}
Mais, à l’exécution j'obtiens l'erreur "impossible de mettre en forme la valeur avec le type souhaité".

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.