【问题标题】:Correct way to share view models MVVM?共享视图模型 MVVM 的正确方法?
【发布时间】:2012-06-10 11:59:12
【问题描述】:

我有 ContractView。这将从我的仪表板上的 2 个单独的图块中显示。一种用于基本负载,一种用于峰值负载。

当显示基本负载剪辑时,标题将是基本负载剪辑定义,当从我仪表板上的峰值负载图块显示时,它将是峰值负载剪辑定义

同样,ViewModel 需要根据用户单击的图块获取基本负载或峰值负载剪辑

我知道我可以做到这一点的一种方法是制作 2 个单独的副本,但这似乎完全错误,因为它会复制视图。

关于视图模型大小,我正在考虑创建 2 个单独的视图模型并从 ClipDefinitionViewModel 继承它们。然后,两个新的视图模型类将知道要从数据服务获取的剪辑类型

有没有更好的办法?

我正在使用简单的 MVVM 工具包

保罗

【问题讨论】:

    标签: mvvm silverlight-5.0 mvvm-toolkit


    【解决方案1】:

    一个类,两个具有不同属性的对象。

    在构造 VM 时设置 Title 属性(传递给构造函数或显式设置)。

    同样,LoadSource 属性可以定义 VM 应在何处查找其定义。

    【讨论】:

    • 好的,谢谢 Gaz,我正在通过简单的 mvvm 工具包使用视图模型定位器,所以我需要确保这可能通过我不需要 2 个 XAML 文件吗?这种情况会导致我将发布一个单独的问题,尽管有关创建和共享 Silverlight 控件
    • 啊,ViewModelLocator 正在使用“视图优先”模式(例如,您首先创建视图,然后为其找到视图模型)。我想你需要 XAML 文件然后,是的。我总是先使用 ViewModel 来防止此类问题。
    • 容易改吗?有没有可以指点我的例子?我将尝试将仪表板本身放入用户控件中,这将避免重复,但我对这一切都很陌生,所以不太确定如何设置属性
    • View vs ViewModel 优先:stackoverflow.com/questions/3763072/….
    • Josh Smith 的经典教程(ViewModel 优先):msdn.microsoft.com/en-us/magazine/dd419663.aspx
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2012-05-05
    相关资源
    最近更新 更多