wpf - DataTemplate 具有非空构造函数的 ViewModel ?

标签 wpf constructor viewmodel

如何使用带有非空构造函数的 ViewModel 对 UserControl 进行数据模板化?

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

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

你如何应对这种情况?

最佳答案

 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 中的 View 模型,那么您需要公开一个 public Person Person属性并坚持使用无参数构造函数。只需在 Person 中执行设置你在构造函数中所做的事情。当然,现在您已经打开了一 jar 蠕虫,因为您还需要实例化 Person在带有无参数构造函数的 XAML 中,很快事情变得非常难看……

关于wpf - DataTemplate 具有非空构造函数的 ViewModel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3688421/

相关文章:

c# - 在WPF(MVVM)中将数据绑定(bind)到 subview

java - 对象的引用可以在其构造函数完成之前设置吗?

c++ - 如何从另一个类参数访问类构造函数参数

c++ - 创建带参数的 C++ 构造函数

c# - 在 Razor-4 View 中访问模型属性

ios - 无法在 ObjC 中访问 Swift ViewModel 属性

wpf - 从代码隐藏设置用户控件的 DataContext

wpf - VisualTreeHelper.GetChildren 找不到 TabItem 的子项

view - 在 MVVM 中,谁负责控制新 View (当前 View 或其 ViewModel)的创建?

wpf - WPF/Winforms/ClickOnce/的统计使用情况