如果您想将视图与视图模型分离,并将视图模型与模型/dal 分离(基本上,如果您想使用 MVVM),那么您的视图模型和数据模型不应该对设计时间有任何了解。设计时间仅适用于视图。
本文展示了一种通过 XML/XAML 定义设计时数据的方法,因此您的代码无需了解任何相关信息:
http://karlshifflett.wordpress.com/2009/10/21/visual-studio-2010-beta2-sample-data-project-templates/
编辑后:事实证明,您仍然必须使用视图模型才能使现有的 XAML 绑定正常工作。这只会填充视图模型,而不必创建新的数据模型。我不确定,但可能有一些类允许您使用 WPF 绑定机制来处理这个...视图?
Resume Before Edit...:就您首先链接的文章中的解决方案而言,设计器除了您的类及其引用的代码外,不会实例化任何东西。这意味着除非您的视图代码以某种方式直接引用它们,否则不会实例化程序集属性。
如果您真的想在设计时将您的视图模型耦合到您的视图,并使其注册设计时服务,那么您必须将服务注册代码放在您的视图类中,或者视图类直接引用的类中。
为此,您可以使用视图的静态构造函数来注册设计时服务。您还可以在其他一些类(应用程序?)上编写一个静态方法来(有条件地)注册设计时服务。然后,在视图的构造函数中调用该方法。
或者您可以简单地在每个视图的构造函数中注册它们。
基本上,您想做的事情是可能的,但第一篇文章中链接的方法不是。如果您在评论中进一步阅读,您会发现他的方法被打破了。
您可能还想质疑在设计时将视图模型与视图挂钩的想法,因为 MVVM 模式旨在避免这种事情。