У поширеній розробці Wpf ми реалізуємо інтерфейс INotifyPropertyChanged у ViewModel, щоб досягти мети сповіщення про зміни інтерфейсу шляхом запуску події PropertyChanged.
У фреймворку MVVMLight ViewModel, який ми тут визначаємо, успадкований від ViewModelBase, який інкапсулюється у фреймворку MvvmLight, і реалізував інтерфейс INotifyPropertyChanged.
Тому при визначенні властивості ViewModel нам потрібно лише викликати RaisePropertyChanged(PropertyName), щоб повідомити про зміну властивості.
Події — це найважливіший спосіб взаємодії інтерфейсу з фоновим кодом у WPF/SL-додатках, і на відміну від традиційних методів, події переважно обробляються шляхом прив'язки до команд у mvvm, тому, щоб зрозуміти, як обробляються події в mvvm, спочатку потрібно ознайомитися з тим, як працюють команди.
1. Команда RelayCommand
Команди WPF/SL створюються шляхом реалізації інтерфейсу ICommand. ICommand відкриває два методи (Execute і CanExecute) та подію (CanExecuteChanged). Execute виконує дію, пов'язану з командою. CanExecute визначає, чи можна виконати команду на поточній командній цілі. Клас, що реалізує інтерфейс ICommand у MvvmLight, — це RelayCommand, який ініціалізує методи Execute і CanExecute через конструктор, тому конструктор передає параметри типу делегата, а Execute і CanExecute виконують делеговані методи, а відповідний код RelayCommand виглядає так:
2. Зв'язування атрибутів Comand
Простий приклад: TextBox і кнопка, TextBox доступний лише тоді, коли вміст не порожній, а доступна кнопка натискається, щоб показати вміст TextBox.
ViewMode:
|