“嵌套”MVVM问题

时间:2011-02-21 05:12:46

标签: wpf mvvm

我有一个WPF窗口,它有一个数据网格和一个用户控件,用于该数据网格中字段的表单。用户控件和WPF窗口具有视图模型。

用户控件的DataContext绑定到窗口视图模型的成员字段之一,其值在数据网格的Selection Changed事件期间发生变化。

我不确定这是否是正确的方法,因为由于某些原因我无法创建从内部视图模型到外部视图模型的引用。构造函数注入不起作用,因为我只需要使用默认构造函数,我似乎无法将属性注入器放在正确的位置(当我尝试使用它时总是得到空引用)。

我也无法在内部视图模型中使我的属性更改通知正常工作。

是否有更好的方法来连接我的视图模型,以便在数据网格中选择新行时,它们会自动更改用户控件中的值?我觉得绑定到控件的DataContext是不可能的。

1 个答案:

答案 0 :(得分:0)

这似乎不是一个复杂/嵌套的场景。看起来几乎是一个普通的主要细节场景。假设您要编辑Customer数据,我会将一个ObservableCollection实例绑定到DataGrid,并且VM中也会有一个SelectedCustomer属性。在DataGrid中,您可以将SelectedItem twoway绑定设置为SelectedCustomer属性,这使SelectedCustomer始终随您的选择一起更新。由于usercontrol与DataGrid行中的客户实例相同,因此每当您更改UC中的任何内容时,这些数据都将反映在网格中。当然,所有这些属性都应该解雇NotifypropertyChanged。