代码之家  ›  专栏  ›  技术社区  ›  Chen Kinnrot

如何在m-v-vm中将视图拆分为模块

  •  3
  • Chen Kinnrot  · 技术社区  · 16 年前

    我想把我的视图项目分成几个模块。 我想有一个主项目,将有参考所有模块,这个主项目将产生从模块的看法。

    我的问题是如何将应用程序中的所有样式绑定到其他模块?

    它会自动识别它们吗?

    视图模型模板将如何定位?因为现在它们在我合并到app.xaml的资源字典中

    我应该把它们放在哪里(我希望它们在模块项目中),

    2 回复  |  直到 16 年前
        1
  •  2
  •   Community CDub    8 年前

    好问题。正如Anderson Imes所说,您可以使用复合WPF,但如果您使用 Managed Extensibility Framework another question I asked 关于如何使用MEF实现您所说的功能。基本上,它使用MEF的可扩展性特性使应用程序资源可扩展,然后您的模块使用其数据模板(视图)来“扩展”应用程序资源。然后,只要将ViewModel添加到GUI中,WPF就会负责将视图应用到GUI中。我已经在这个模型上构建了一个应用程序,它运行得非常好。

    使用此方法的好处是,您的app.xaml文件不必“了解”所有视图模块,您可以自由地按自己喜欢的方式分割应用程序(我更喜欢按功能,然后按层分割)。

        2
  •  1
  •   Community CDub    8 年前

    如果您使用Prism,则可以轻松实现您的目标: http://www.codeplex.com/CompositeWPF

    有很多样品可以让你从那里开始。

    Prism没有回答的唯一问题是ResourceDictionaries,但有几种方法可以解决这个问题,但我认为这是最好的方法: Composite WPF (Prism) module resource data templates

    第一个答案会让你达到目的。您将在模块中失去一点设计时支持,但在运行时,所有内容都应该以这种方式正确组合在一起。