首先对不起我的英语
我有一个阶级的人,有一些属性
class Person
{
//Properties
}
和窗口人员搜索这是该窗口的视图模型包含人员列表并使用Mvvm
class PersonSearchViewModel
{
public PersonSearchViewModel(Person person)
{
SelectedPerson = person;
}
public Person SelectedPerson { set; get; }
public ObservableCollection <Person> PersonList { set; get; }
}
和窗口人员信息以插入和更新
class PersonInformationView : Window
{
public PersonInformationView()
{
InitializeComponent();
this.DataContex = vm;
}
PersonInforamtionViewModel vm = new PersonInforamtionViewModel();
private void buttonOpenSearch_Click(object sender, RoutedEventArgs e)
{
PersonSearchView p = new PersonSearchView(vm.PersonInfo);
}
}
以及该窗口的视图模型
class PersonInforamtionViewModel
{
public Person PersonInfo { set; get; }
}
当打开窗口时,我需要从窗口人员信息和所选人员项目搜索。。。更改Auto属性===>PersonInfo实现一流是的一项责任
您的问题是您正在从视图中驱动所有内容。在MVVM中,应该是虚拟机负责并驱动一切。视图只是虚拟机的包装
目前,您正在从PersonInformationView
创建PersonSearchView
,但这使您无法看到PersonSearchView
中的PersonSearchViewModel
,而具有SelectedPerson
的是PersonSearchViewModel
。
相反,您应该从PersonInformationViewModel
创建PersonSearchViewModel
。这样,您就可以对PersonSearchViewModel.SelectedPerson
中的更改做出反应,可以订阅PropertyChanged
,也可以更好地将回调委托传递到PersonSearchViewModel
构造函数中,该构造函数应该在人员选择人员时调用。