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

标签 wpf mvvm

我对 WPF 和 MVVM 世界很陌生,在过去的几天里,我下载了尽可能多的教程,并尽可能多地阅读!

然而,我正在努力用 MVVM 实现一个非常基本和常见的概念,并且迫切需要一些帮助 - 甚至可能是一个例子:-)

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

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

以上所有工作都完美无缺。

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

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

非常感谢,
布伦丹

最佳答案

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

  • 创建一个新的 Dialog 和 DialogViewModel
  • 将 DialogViewModel.EditableContentProperty 绑定(bind)到 ListBox 的 SelectedItem
  • Dialog.DataContext = DialogViewModel
  • Dialog.ShowDialog()
  • 关于wpf - MVVM - 如何根据列表中的选定项目打开窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4548706/

    相关文章:

    wpf - 禁用调整 ListView 中列的大小

    wpf - .Net 4.5 中事件的标记扩展

    c# - WPF内存碎片

    c# - 如何将 ObservableCollection<bool> 绑定(bind)到 WPF 中的复选框列表框

    wpf - 将WPF简单条件从“代码隐藏”移至XAML

    wpf - 在 MediaElement 中重复视频的最简单方法是什么

    wpf 使用 xaml 将键盘焦点设置在文本框上

    mvvm - 围绕 MEF : how to load View(Model)? 缠绕我的思绪

    c# - 严格的 MVVM 和 Task.ConfigureAwait(false)

    c# - 抽象 ViewModel 在被继承时是否被视为模型?