【问题标题】:Can I have multiple ViewModel for a View in WPF我可以在 WPF 中为一个视图有多个 ViewModel
【发布时间】:2010-11-24 08:27:23
【问题描述】:

我可以在 WPF 中为一个视图创建多个 ViewModel 吗?因为有时我们只需要以简单的视图格式显示视图,而有时相同的视图必须以可编辑的格式显示。因此,我们可以为每个创建单独的视图模型。

那么有没有办法将 2 个不同的视图模型挂钩到一个视图?

【问题讨论】:

    标签: mvvm-foundation


    【解决方案1】:

    ViewModel 应该作为 View 的数据上下文,因此只允许单个 VM。

    没有理由不能将 View 分成多个 UserControl,每个都有自己的 ViewModel。

    【讨论】:

    • 是否有定义此规则的来源?我很想知道这是刹车的最佳做法。
    • @Chucky 你指的是什么规则?视图 DataContext 只能分配一个对象。这可能是一个包含其他视图模型的视图模型。
    • 我明白了。我想我误解了。一个 DataContext 一个 ViewModel。
    【解决方案2】:

    通常您会将您的视图绑定到单一类型的视图模型。这并不是说您的类型不能是接口或两个视图都继承自的基类。

    当我有一个将跨越多个不同视图的单一视图模型类型时,我倾向于只使用接口或基类/派生类的情况。例如,如果我有两种显示小部件信息的不同类型的表单,我将创建一个基本的小部件 ViewModel 类。

    在您的情况下,听起来您应该 a.) 为您的简单视图和高级视图创建两个视图,或者 b.) 简单地使用单个 ViewModel 类。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 2020-01-14
      • 2014-03-16
      相关资源
      最近更新 更多