据我了解,当我将 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 与 Model 对话并执行它需要做的任何事情来让自己(ViewModel)进入所需的状态。
那么,如果你的“模型”是由 UI 创建的,会发生什么?我的模型是我的 MainWindow 构造函数的一个参数。
所以,我的视图(主窗口)是
public MainWindow(MyObject myObject)
{
InitializeComponent();
}
我的视图模型是
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 中?还是我们觉得有更好的方法?
编辑
解释我想要实现的目标可能会有所帮助。我的程序执行一些任务并创建一个日志。日志存储在内存中。在我的程序进程结束时,日志显示在屏幕上。这就是我将对象传递给构造函数的原因。