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

Eli*_*eth 5 wpf constructor viewmodel

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

public PersonViewModel(Person person)
{
   _person= person;
    // do some stuff                          
}
Run Code Online (Sandbox Code Playgroud)

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

你如何应对这种情况?

Jay*_*Jay 1

 var person = new Person();\n var viewModel = new PersonViewModel(person);\n\n var view = new EditPersonView(viewModel); // use overloaded constructor to inject DataContext\n // OR\n var view = new EditPersonView{ DataContext = viewModel };\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您确实想在 XAML 中实例化视图模型,那么您需要公开一个public Person Person属性并坚持使用无参数构造函数。只需在Personsetter 中执行在构造函数中执行的操作即可。当然,现在您已经打开了一大堆蠕虫,因为您还需要使用Person无参数构造函数在 XAML 中实例化 ,很快事情就会变得非常丑陋\xe2\x80\xa6

\n

  • 因为我发现这很有用:................................ <DataTemplate DataType="{x:Type ViewModel:CustomerViewModel }"> <视图:CustomerUserControl/> </DataTemplate> (4认同)