【问题标题】:Accessing one view model from another从另一个视图模型访问一个视图模型
【发布时间】:2016-01-26 05:02:40
【问题描述】:

我的测试应用程序的各个部分都有许多视图模型。

一个视图模型用于用户设置(默认目录、SQL Server、SQL 数据库等),称为MainSettingsViewModel。它包含一个 MainSettings 模型的实例,其中包含配置详细信息。

另一个视图模型在ObservableCollection 中包含计算机列表(包含ComputerNameComputerDatabase、计算机同步时间等信息)。

另一个包含网络设备的详细信息(名称、位置 IP 等)。

现在我需要使用来自这些不同视图模型的所有上述信息来执行任务。例如,我想 ping NetworkDevices 视图模型中的每个网络设备并将结果发送到 MainSettings 视图模型中的文件,然后通过每个计算机视图模型进行通信并执行一些测试。

我遇到的问题是这些视图模型是在它们各自的视图中构建的,并且没有任何方法可以相互交流它们的信息。

我的视图模型应该如何相互通信?

【问题讨论】:

  • 我建议您在开始项目之前阅读更多 MVVM 模式。您显然将模式与某些对象或基类混淆了,没有“多个 MVVM”,您要么拥有 ViewModel、Model(作为层或作为对象)和 View。 “模型”还包括您的业务逻辑,即服务和存储库,而不仅仅是描述您的数据结构的 POCO 类
  • 感谢 Will 和 Tseng,当您这样说时,术语显然更有意义。我会努力学习更多。

标签: wpf mvvm


【解决方案1】:

每个视图模型都需要引用它需要与之通信的任何其他视图模型

如果您有一个“主”视图模型,它可以根据需要实例化其他视图模型,并在构造函数中为它们传递对自身的引用。这些 VM 可以将来自构造函数的引用保存在私有字段中,并根据需要在其上调用公共方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-30
    • 2011-08-09
    • 2021-09-24
    • 1970-01-01
    • 2017-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多