ビューモデルを使用してxamlビューにコマンドをバインドする単純なMVVMアーキテクチャがあります。私のコマンドはかなり一般的なので、それらを2つのビューにバインドするので、私はそれらをICommand
インターフェイスを実装する独自のクラスに入れました。ビューモデルの中に私はそういう公共アクセサーを持っています:ビューモデルを使用してXAMLビューにコマンドクラスを公開する方法
private ICommand _myCommand;
public ICommand MyCommand
{
get
{
if (_myCommand == null)
{
_myCommand = new MyCommand(_injectedModel);
}
return _myCommand ;
}
}
これはすべて機能していますが、私はこれらの機能がたくさんあります。それらはすべて大雑把に同じことを行います。コマンドを公開プロパティとして公開し、プライベートコマンドが既に存在するかどうかを確認し、そうでない場合は新しいコマンドを作成します。それは私の味のための少し "定型句"です。
私はこれを抽象化するための良い方法が欲しいです。何らかのコマンドマップからの識別子に基づいてコマンドを検索するメソッドを作成することができました。私はビューモデルのコンストラクタですべてのコマンドを作成することができます(遅延的に行うのではなく)。
あなたはベストプラクティスをどのように考えますか?各ビューモデル内で新しいコマンドをインスタンス化するのを避け、中心的なコマンドルックアップを持つべきですか?
「return _myCommand ??」の構文でこれを統合することができます。 (_myCommand = new MyCommand(_injectedModel)); ' – Jay