私はWPF MVVMアプリケーションに取り組んでいます。私が気づいたことは、(WPF チームの MVVM ツールキットの DelegateCommands を介して) コマンド、添付プロパティ、および添付ビヘイビアを宣言するためだけに、非常に多くのボイラープレート コードを書かなければならないことです。記述しなければならない定型コードの量を減らすために利用できる戦略はありますか?
ありがとう!
私はWPF MVVMアプリケーションに取り組んでいます。私が気づいたことは、(WPF チームの MVVM ツールキットの DelegateCommands を介して) コマンド、添付プロパティ、および添付ビヘイビアを宣言するためだけに、非常に多くのボイラープレート コードを書かなければならないことです。記述しなければならない定型コードの量を減らすために利用できる戦略はありますか?
ありがとう!
個人的には、Josh Smith のMVVM Foundation ライブラリが気に入っています。彼はそこで呼び出されたクラスを使用していRelayCommand
ますが、ツールキットのクラスとかなり似ていますDelegateCommand
。コマンドを作成し、ラムダ式を介してCanExecuteおよびExecuteロジックを渡すことができます。これにより、多くのボイラープレート コードを削減できます。
Joshは自身のブログPropertyChanged
で、ジェネリック プロパティ オブザーバーを使用して、イベント処理の複雑な側面を回避する方法についても説明しています。それも検討する価値があります。
正直なところ、いわゆる「ボイラープレート」コードの多くは、アプリケーションの非常に動的で柔軟な基盤をセットアップしています。小規模で保守が容易なアプリケーションを作成している場合、「ここで MVVM パターンを適用する必要があるのか?」と自問するかもしれません。一方、寿命が長く、多くのメンテナンスが必要な大規模なアプリケーションを作成している場合は、このボイラープレート コードが役に立ちます。
INotifyPropertyChanged インターフェイスを介して変更通知を実装するために、大量のコードを書いていることがわかりました。これを減らすために、INotifyPropertyChanged をクラス プロパティに簡単に追加できるようにする PropertyChanged.Fody という NuGet パッケージを見つけました。
使用方法は次のとおりです。
using PropertyChanged;
[ImplementPropertyChanged]
public partial class Order
{
}
これで、クラス内のすべてのパブリック プロパティに、プロパティ変更通知が表示されます。これは、エンティティを完全に制御できない DB 最初に生成された EF クラスに特に役立ちます。
詳細については、 GitHubを参照してください。
私が考えることができる最も明白な戦略は、コード スニペットやファイル テンプレートを使用することです。コードの行数は減りませんが、少なくとも時間を節約できます。
自分で作成できます (または、Visual Studio に直接インポートできるものを見つけてください)。
私は個人的に Laurent Bugnion の mvvm light ツールキットを使用しており、彼のコード スニペット/ファイル テンプレートを使用しています。一般的な mvvm ツールキットのほとんどに似たようなものがあると思います。
それが役に立てば幸い!