Я решил не добавлять это в MVVM Light, потому что решения включают в себя либо Reflection (который замедляет работу), либо IL-ткачество (что является «волшебным») и поэтому противоречит принципам MVVM Light, который должен быть легким ипрост для понимания.
Чтобы «бороться» с упомянутыми вами проблемами, в MVVM Light есть три инструмента:
- Фрагмент кода для автоматического создания «связываемого» свойства. Просто введитеmvvminpc, а затем разверните фрагмент. Это простой способ избежать написания кода.
- «Волшебная строка» объявляется как открытая константная строка в классе VM. Таким образом, вы избегаете опечаток.
- Во время отладки класс ViewModelBase автоматически проверяет, существует ли имя свойства в классе VM при вызове RaisePropertyChange. Это ловит опечатки в начале разработки.
С этими тремя инструментами онмоя оценка того, что другие механизмы не нужны. Однако, по многочисленным просьбам, я добавлю способ в RaisePropertyChanged с использованием лямбда-выражения (например, RaisePropertyChanged (vm => vm.MyProperty)).Это будет, конечно, необязательно, если вы не хотите, чтобы этот хит был идеальным.
Кроме того, в этом году я разговаривал с влиятельными людьми (включая Андерса Хелсберга) и подчеркнул, что это будетбыло бы хорошо, чтобы это было запечено в рамках (или даже на языке).Это было бы самым удовлетворительным решением (из-за улучшения производительности, которое MSFT могла бы сделать для этого), но это, очевидно, потребует времени (если это когда-нибудь произойдет).
Cheers, Laurent