2010-05-20 5 views
0

Dans ma classe ViewModel J'ai une propriété:Comment déclencher la mise à jour de la source de liaison du code dans WPF?

class ViewModel : INotifyPropertyChanged 
{ 
public string FileName {get;set;} 
} 

et dans mon View Je lie le contenu d'une étiquette de ViewModel FileName.

maintenant Lorsque je fais glisser un fichier vers mon View par glisser-déposer, comment puis-je mettre à jour la propriété Content du label, afin que les FileName du ViewMode soient également mis à jour via la liaison?

La définition directe de la propriété Content de l'étiquette ne fonctionnera pas, elle efface simplement la liaison.

Répondre

0

Si vous devez le faire dans le code-behind, vous pouvez faire quelque chose comme ça:

ViewModel vm = (ViewModel)this.DataContext; 
vm.FileName = path; 

(BTW, votre classe a besoin de ViewModel pour mettre en œuvre INotifyPropertyChanged)

+0

alors la vue devra savoir à propos du ViewModel, est-ce anti-pattern? – Benny

+0

J'ai implémenté INotifyPropertyChanged – Benny

+0

Eh bien, la vue connaît toujours le ViewModel, car il a une référence à celui-ci (DataContext) et a des liaisons à ses propriétés ... Si le ViewModel connaissait la vue, * alors * vous casseriez le motif –

Questions connexes