Я работаю над своим первым проектом на C # / WPF (я Java / Web-разработчик с некоторым опытом работы с Flex / As). Модель MVVM, казалось, была подходящим способом, поэтому я начал подниматься по кривой обучения ...
Я хотел бы знать, что считается способом уведомления об изменениях состояния между связанными объектами ViewModel.
Короче говоря, у меня есть UserControl, содержащий TreeView, который связан с коллекцией ReadOnlyCollection, предоставляемой MyTreeViewModel.
SomethingViewModel реализует INotifyPropertyChanged и генерирует событие, когда изменяется его свойство IsSelected.
MyTreeViewModel имеет обработчик события, присоединенный к событию PropertyChanged SomethingViewModel, и обновляет свойство, которым он управляет, под названием «В настоящее время выбранный элемент».
MyTreeViewModel также реализует INotifyPropertyChanged и генерирует событие, когда изменяется его свойство CurrentSelectedElement.
Наконец, у меня есть обработчик событий в другом классе ViewModel, который обрабатывает изменение выбора.
Это правильный подход к этому в C # / WPF?
Кроме того, я не очень люблю использовать имена свойств со строками в моих методах обработки событий; Мне кажется, это не очень удобно для рефакторинга. Пока я справился с этим, представив имя свойства в виде статической строки, так что я могу просто использовать следующее в моем методе обработчика событий:
if(SomeViewModel.PROPERTY_IS_SELECTED.Equals(e.PropertyName)) { ... }
Знаете ли вы лучшую альтернативу? Я думаю, что должен быть способ сделать это, но, честно говоря, я еще не исследовал это.
Спасибо за ваш отзыв!