Bonjour à tous,
Je viens de découvrir MVVM et j'ai décidé de refaire d'anciens programmes proprement.
Mon probleme est le suivant : je n'arrive pas à binder une DependencyProperty d'un usercontrol avec une liste de ma vue-model.
Voici la déclaration de la DependencyProperty dans mon UserControl
Le binding cote xaml
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 public static readonly DependencyProperty ListeFichiersProperty = DependencyProperty.Register("ListeFichiers", typeof(ObservableCollection<Fichier>), typeof(ScanFichier)); public ObservableCollection<Fichier> ListeFichiers { get { if (GetValue(ListeFichiersProperty) == null) return null; return (ObservableCollection<Fichier>)GetValue(ListeFichiersProperty); } set { SetValue(ListeFichiersProperty, value); } }
Le binding de la VM sur code (Qui marche je pense)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 <local:ScanFichier x:Name="USScan" ListeFichiers="{Binding Path=ListeFichier, Mode=TwoWay}"></local:ScanFichier>
Et pour finir la creation de la VM
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public AddFilm() { InitializeComponent(); this.DataContext = new ViewModel.VMTraitementFilms(this); }
Si j'enlève les commentaires de la creation de la VM la dependency a une valeur, mais sinon le binding cote xaml ne fonctionne pas et la valeur reste nulle.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public VMTraitementFilms(Window w) { _window = w; ListeFichier = new ObservableCollection<Fichier>(); //var tmp = (AddFilm)w; //tmp.USScan.ListeFichiers = ListeFichier; }
J'ai essayé avec une ObservableCollection<string> mais le resultat est identique.
J'ai une commande bindée qui fonctionne donc je supose que le bind V - VM est OK
Quelqu'un aurait-il une idée svp ?
Merci d'avance
Partager