如何使用带有NON-Empty构造函数的ViewModel对UserControl进行datatemplate?
public PersonViewModel(Person person)
{
_person= person;
// do some stuff
}
在Xaml中将其绑定将崩溃,因为Ctor不为空。但是当我使用ViewModel的父/子关系时,我必须将person对象传递给ViewModel的构造函数......
你如何应对这种情况?
答案 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
,很快就会变得非常难看......