MVVM - 如何根据列表中的选定项打开窗口?

时间:2010-12-28 19:13:13

标签: wpf mvvm

我对WPF& MVVM世界,并且花了最后几天尽可能多地下载教程,并尽可能多地阅读!

然而,我正在努力用MVVM实现一个非常基本和共同的概念,我迫切希望得到一些帮助 - 甚至可能是一个例子:-)

我已经掌握了M-V-VM的基础知识,指挥甚至是喋喋不休;但是如何在earch上打开一个新窗口并将窗口ViewModel设置为列表框的选定项目?

让我解释一下: 我有一个名为Client的Model,它有一些属性 然后我有一个ViewModel,它获取我的所有客户端并将它们存储在ObservableCollection中 我有一个屏幕,我显示名称&列表框中的姓氏,允许用户过滤和搜索。

以上所有工作都很完美。

当用户选择某个项目时,我想打开该特定客户端的可编辑“详细客户端视图”屏幕。这个详细屏幕的ViewModel需要以某种方式绑定到所选项目(如果这是有意义的);或者我需要能够将参数传递给新打开的屏幕的ViewModel。事实上,如果用户可以同时打开多个细节屏幕并编辑多个clints,那就太棒了!

如果有人能给我一个很好的例子,或者指出我正确的方向,我会真的很棒!

非常感谢, 布伦丹

2 个答案:

答案 0 :(得分:2)

我会向ListBox.SelectionChanged添加一个事件,它执行以下操作:

  • 创建新的Dialog和DialogViewModel
  • 将DialogViewModel.EditableContentProperty绑定到ListBox的SelectedItem
  • Dialog.DataContext = DialogViewModel
  • Dialog.ShowDialog()

答案 1 :(得分:2)

简单地说:

//Create the Client Detail form
frmClientDetails frm = new frmClientDetails();
frm.Owner = this;
var ViewModel = new ClientDetailViewModel((Client)lstFoundClients.Items.CurrentItem);
frm.DataContext = ViewModel;
frm.Show();