将带有参数化构造函数的视图模型分配为视图的数据上下文的最简洁方法是使用该ViewModelLocator
模式。
public class ViewModelLocator
{
public ViewModelLocator()
{
// define view-model definitions in IoC container.
}
public MainViewModel MainViewModel
{
get
{
// use the appropriate construct for your choice of IoC container
var result = IoCContainer.GetInstance<MainViewModel>();
return result;
}
}
}
可以在 App.xaml 中创建此类的实例
<Application.Resources>
<local:ViewModelLocator x:Key="ViewModelLocator">
</Application.Resources>
它成为应用程序范围的资源,可以在每个视图中引用。
现在我们可以随时获取特定视图模型的实例,包括在设计器中,并将其分配为视图的 DataContext。
<Window
x:Class="MyApplication.MainView"
...
DataContext="{Binding Source={StaticResource ViewModelLocator}, Path=MainViewModel}" />
有关此 ViewModelLocator 模式使用的更多详细信息,包括在您的 ViewModel 中包含设计时数据,请查看我的博客文章。