ViewModelにコンストラクタにパラメータを渡します
-
26-09-2019 - |
質問
それはViewModelにコンストラクタにパラメータを渡すことは可能ですか?私は、プロパティを初期化および/またはViewModelにに他の操作を行うには、このパラメータを使用することになります。
私は何ができるのWinFormsで
public MyForm(MyParamType myParam) { MyFormProperty = myParam; //etc. }
私はMVVMライトを使用して/ MVVMパターンに似た何かをやって行く方法を教えてください。
任意の提案は、最も歓迎されるでしょう。事前に感謝します。
解決
私はIoCコンテナを使用して、建設時にパラメータを供給するために、あなたのコンテナを設定することをお勧めします。
は例えば、ここでユーザーコントロールへの典型的なコードビハインドは、WPFで私のために次のようになります。
public partial class MyDataGridView : IMyListView
{
public MyDataGridView()
{
InitializeComponent();
}
public MyDataGridView(MyListViewModel viewModel)
{
InitializeComponent();
DataContext = viewModel;
}
}
デフォルトではgreediestコンストラクタを検索して、依存関係を提供するため、のStructureMapは私のためにMyListViewModelを作成します。私のStructureMapの構成では、私はMyListViewModelは、そのオブジェクトの構築時に必要なものは何でもパラメータを提供するように指定できます。
のStructureMap状の容器で、私は、オブジェクトまでの「新」がありません。エヴァー。
他のヒント
あなたはMVVM光を使用して(あなたがいない方にも、私は推測する)あなたは、コンストラクタのパラメータ(またはそのタプルを)かかりメッセンジャーでメッセージハンドラを登録することができ、あなたが再構築「に必要なときにVMを更新している場合" それ。
すべてのビューモデルがロケータ上の静的なので、あなただけのコンストラクタを変更せずに、既にこれらのプロパティにアクセスすることができます。
私は理解しません。あなたは常にあなた自身のviewmodelを作成することができます。 MVVMライトが提供するのviewmodelがあるなら、あなたは常にその1から継承し、オーバーロードコンストラクタを作成することができます。