【问题标题】:How can I pass objects to ViewModels using NavigationService?如何使用 NavigationService 将对象传递给 ViewModel?
【发布时间】:2011-09-07 06:10:36
【问题描述】:

我正在进行的项目是一个基于桌面的 WPF 应用程序。我已经在其中实现了 MVVM 模式。我也在其中使用 Unity IoC 和存储库模式。

我在主详细信息类型场景中遇到问题。我导航到详细信息页面(我已使用 IoC 在 ViewModel 中公开 NavigationService),但我不知道如何在不破坏 MVVM 模式的情况下在 EmployeeDetails ViewModel 中获取employeeID。我不想在后面的代码中写任何东西。

任何指针都会很有帮助。

问候。

【问题讨论】:

    标签: .net wpf xaml mvvm inversion-of-control


    【解决方案1】:

    通常,您可以通过在 EmployeeMasterViewModel 中公开属性 CurrentEmployee 来实现此目的。此属性是绑定到主列表中当前选定项目的数据。
    然后将详细信息页面的控件绑定到CurrentEmployee 的属性。

    【讨论】:

    • 如果主视图模型和细节视图模型都以某种方式嵌套在一个类中,这可能是可能的。但我正在谈论的是两个不同/独立的视图具有不同的视图模型,我正在从一个视图导航到另一个视图使用 NavigationService。
    • 不能用this overload of Navigate传入当前选中的员工吗?
    • 不,因为我不能从我的 ViewModel 中引用 View 的类,只是为了保持关注点和 MVVM 模式的分离。我只能使用 uri 导航到页面。
    • 还有另一个重载,它接受一个 Uri 作为第一个参数,一个任意对象作为第二个参数...
    • 是的,我也尝试过。但不幸的是,我无法在我的详细信息页面上获取 e.ExtraData。 social.msdn.microsoft.com/forums/en-US/wpf/thread/… 这解释了这个问题.. 那里似乎没有面向 mvvm 的解决方案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-03
    • 1970-01-01
    • 2020-03-13
    • 1970-01-01
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    相关资源
    最近更新 更多