DataTemplate一个带有NON-Empty构造函数的ViewModel?

时间:2010-09-10 21:19:20

标签: wpf constructor viewmodel

如何使用带有NON-Empty构造函数的ViewModel对UserControl进行datatemplate?

public PersonViewModel(Person person)
{
   _person= person;
    // do some stuff                          
}

在Xaml中将其绑定将崩溃,因为Ctor不为空。但是当我使用ViewModel的父/子关系时,我必须将person对象传递给ViewModel的构造函数......

你如何应对这种情况?

1 个答案:

答案 0 :(得分:1)

 var person = new Person();
 var viewModel = new PersonViewModel(person);

 var view = new EditPersonView(viewModel); // use overloaded constructor to inject DataContext
 // OR
 var view = new EditPersonView{ DataContext = viewModel };

如果你真的想在XAML中实例化视图模型,那么你需要公开public Person Person属性并坚持使用无参数构造函数。只需在Person setter中执行您在构造函数中所做的操作。当然,现在你已经打开了一堆蠕虫,因为你还需要使用无参数构造函数在XAML中实例化Person,很快就会变得非常难看......