我刚刚开始使用WPF中的MVVM模式,并且决定构建我的代码的最优雅方式是将视图模型注入到视图的构造函数中。MVVM - 视图是否真的需要一个默认构造函数?
这一切都很好,但ReSharper在XAML中给出警告,我的视图没有默认的构造函数。我假设这是为了能够在需要时在XAML中构建我的视图,但这只是一个猜测。
通过要求我的视图在构造函数中使用视图模型,我放弃了什么?
编辑:我的观点的构造是这样的:
public ExampleView(ExampleViewModel viewModel)
{
if (viewModel == null) throw new ArgumentNullException("viewModel");
DataContext = viewModel;
}
答:我在下面设置,在设计时命名空间包含嘲笑了用于测试和设计时间视图模型的版本解决支持。
ExampleView.xaml.cs
public ExampleView()
{
InitializeComponent();
}
public ExampleView(IExampleViewModel viewModel)
: this()
{
DataContext = viewModel;
}
ExampleView.xaml
<UserControl
x:Class="Wpf.Examples.ExampleView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:DesignTime="clr-namespace:Wpf.Examples.DesignTime">
<UserControl.DataContext>
<DesignTime:ExampleViewModel/>
</UserControl.DataContext>
</UserControl>
无论如何,我在构造函数中设置DataContext,有没有更好的模式呢? – 2009-04-23 07:14:14