W powszechnie używanym rozwoju Wpf implementujemy interfejs INotifyPropertyChanged w ViewModel, aby osiągnąć cel powiadomienia o zmianach interfejsu poprzez wywołanie zdarzenia PropertyChanged.
W frameworku MVVMLight ViewModel, który tu definiujemy, jest dziedziczony z ViewModelBase, który jest zamknięty w frameworku MvvmLight i zaimplementował interfejs INotifyPropertyChanged.
Dlatego przy definiowaniu właściwości ViewModel wystarczy wywołać RaisePropertyChanged(PropertyName), aby powiadomić o zmianie właściwości.
Zdarzenia są najważniejszym sposobem interakcji UI z kodem tła w aplikacjach WPF/SL, a w przeciwieństwie do tradycyjnych metod, zdarzenia obsługiwane są głównie przez powiązania z poleceniami w mvvm, więc aby zrozumieć, jak zdarzenia są obsługiwane w mvvm, najpierw trzeba znać, jak działają polecenia.
1. Dowództwo RelayCommand
Polecenia WPF/SL są tworzone przez implementację interfejsu ICommand. ICommand udostępnia dwie metody (Execute i CanExecute) oraz zdarzenie (CanExecuteChanged). Execute wykonuje akcję powiązaną z poleceniem. CanExecute określa, czy polecenie może zostać wykonane na bieżącym celu polecenia. Klasą implementującą interfejs ICommand w MvvmLight jest RelayCommand, która iinicializuje metody Execute i CanExecute przez konstruktor, więc konstruktor przekazuje parametry typu delegata, a Execute i CanExecute metody delegowane, a odpowiedni kod RelayCommand jest następujący:
2. Wiązanie atrybutów Comand
Prosty przykład: TextBox i przycisk, TextBox jest dostępny tylko wtedy, gdy treść nie jest pusta, a dostępny przycisk jest kliknięty, aby wyświetlić zawartość TextBoxa.
ViewMode:
|