Сокращение стандартного кода в приложении MVVM WPF для прикрепленных свойств, команд и т. Д.? - PullRequest
9 голосов
/ 11 августа 2009

Я работаю над приложением WPF MVVM. То, что я замечаю, это то, что я должен написать чрезмерное количество стандартного кода просто для объявления команд (через DelegateCommands из набора инструментов MVFM команды WPF), прикрепленных свойств и прикрепленного поведения. Существуют ли какие-либо стратегии по сокращению количества шаблонного кода, который я должен написать?

Спасибо!

Ответы [ 3 ]

9 голосов
/ 11 августа 2009

Лично мне нравится библиотека Джоша Смита MVVM Foundation . Там он использует класс RelayCommand, но он звучит очень похоже на ваш DelegateCommand из инструментария. Он позволяет вам создать команду и передать логику CanExecute и Execute через лямбда-выражения. Это поможет уменьшить количество шаблонного кода.

В своем блоге Джош также говорит об использовании универсального наблюдателя свойств, чтобы избежать некоторых более сложных аспектов обработки событий PropertyChanged. Это тоже стоит посмотреть.

Честно говоря, многие из так называемого «стандартного» кода создают очень динамичную и гибкую основу для вашего приложения. Если вы создаете небольшое, легко обслуживаемое приложение, вы можете спросить себя: «нужно ли мне вообще применять шаблон MVVM здесь?» Если, с другой стороны, вы создаете более крупное приложение, которое будет имеют длительный срок службы и требуют значительного обслуживания, тогда этот стандартный код поможет вам сэкономить.

2 голосов
/ 04 ноября 2016

Я обнаружил, что пишу много кода для реализации уведомлений об изменениях через интерфейс INotifyPropertyChanged. Чтобы уменьшить это, я нашел пакет NuGet с именем PropertyChanged.Fody, который делает добавление INotifyPropertyChanged к свойствам классов действительно простым.

Вот как это использовать;

using PropertyChanged;

[ImplementPropertyChanged]
public partial class Order
{
}

Теперь у любого открытого свойства в классе будет уведомление об изменении свойства. Это особенно полезно для классов EF, сгенерированных сначала через БД, где у вас нет полного контроля над вашими сущностями.

См. GitHub для получения дополнительной информации.

1 голос
/ 09 августа 2011

Самая очевидная стратегия, которую я могу придумать, - это использование фрагментов кода и / или шаблонов файлов. Это не уменьшает количество строк кода, но, по крайней мере, позволяет сэкономить время.

Вы можете сделать их самостоятельно (или найти то, что можете импортировать непосредственно в Visual Studio).

Я лично использую набор инструментов mvvm light от Laurent Bugnion, и я использую его фрагменты кода / шаблоны файлов, они экономят много времени. Я предположил бы, что есть нечто подобное для большинства популярных наборов инструментов mvvm.

Надеюсь, это поможет!

...