如果最后在构造函数中包含参数,我们如何将用户控件绑定到视图模型对象?
视图中使用“DataContext”的绑定是否确保在创建视图模型时自动创建视图?
答案 0 :(得分:1)
如果您使用的是IoC容器,则支持开箱即用。
这实际上取决于您使用的IoC容器,但这是使用Prism Unity容器的示例。
以下示例取自Prism QuickStarts guide
因此,首先,我们必须设置统一容器:
public class QuickStartBootstrapper : UnityBootstrapper
{
private readonly CallbackLogger callbackLogger = new CallbackLogger();
/// <summary>
/// Configures the <see cref="IUnityContainer"/>.
///May be overwritten in a derived class to add specific
/// type mappings required by the application.
/// </summary>
protected override void ConfigureContainer()
{
// Here you can do custom registeration of specific types and instances
// For example
this.Container.RegisterInstance<CallbackLogger>(this.callbackLogger);
base.ConfigureContainer();
}
}
从某种程度上说,你做完了! 您现在要做的就是让您的视图在其构造函数中接收viewModel作为参数,如下所示:
public partial class OverviewView
{
public OverviewView(OverviewViewModel viewModel)
{
InitializeComponent();
this.DataContext = viewModel;
}
}
Unity IoC容器将在ViewModel中处理您的参数,即使您不必在大多数时间都注册这些类型。
请注意,在我的回答中,我只提到配置的IoC部分。设置整个MVVM应用程序需要更多的工作,并且根据您使用的MVVM框架而有所不同