私が理解しているように、ViewModelをViewにバインドすると、DataContextを介して行われます。何かのようなもの
<Grid.Resources>
<myData:MyVM x:Key="Vm" />
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource Vm}"></Binding>
</Grid.DataContext>
ViewModelがどのように設定されるかについての私の理解は、ViewがViewModelを(バインディングを介して)呼び出し、ViewModelがモデルと通信し、それ自体(ViewModel)を目的の状態にするために必要なことをすべて実行することです。
では、「モデル」がUIによって作成された場合はどうなりますか?私のモデルは、MainWindowコンストラクターのパラメーターです。
だから、私のビュー(メインウィンドウ)は
public MainWindow(MyObject myObject)
{
InitializeComponent();
}
私のViewModelは
public class ViewModel
{
#region properties
private MyObject myList;
public MyObject MyList
{
get; set ;
}
#region Constructors
public ViewModel ()
{
}
public ViewModel (MyObject myObject)
{
this.myObject= myObject;
}
}
これで、アプリケーションが実行されたときに(そして、ここで間違った単語を使用していると確信しています)、パラメーターをViewModelに「注入」するにはどうすればよいですか?それとも、より良いアプローチがあると思いますか?
編集
私が達成しようとしていることを説明することは役立つかもしれません。私のプログラムはいくつかのタスクを実行し、ログを作成します。ログはメモリに保存されます。プログラムプロセスの最後に、ログが画面に表示されます。これが、オブジェクトをコンストラクターに渡す理由です。