2009-07-24 107 views
1

编写MVVM WPF应用程序时,视图模型必须设置为视图的数据上下文。对我来说,通常是在代码中。但是我意识到,如果我将视图模型声明为xaml内部的静态资源并在其中设置绑定,则不需要在代码中执行此操作。这意味着我不必在第三个类的某个地方协调视图和视图模型,就像在App中一样。可以将视图模型声明为视图中的静态资源吗?

这样做可以接受吗?

谢谢!

回答

1

我会这么说。它意味着View的ViewModel具体的知识,但你必须设置它,我喜欢这里的codebehindless方法。

如果你正在使用依赖注入这不合适,但如果你不是,我会坚持这种方法。

+0

我不知道是什么依赖注入是的,所以我想我没有使用它:) – djcouchycouch 2009-07-24 15:58:31

+0

如果你在做MVVM,你可能想要调查它。如果你的项目有任何规模,我也建议看看(正如史蒂夫罗宾斯正确提到的)棱镜。这是DI的一个非常好的应用。有几件事让MVVM变得更容易一些。如果您至少没有使用mvvmfoundation.codeplex.com,那么您的工作太辛苦:) – 2009-07-24 16:13:17

0

可以接受,是的,但是如果您使用PRISM或任何类型的DI,那么从容器中解析它,然后使用代码或使用标记扩展来设置datacontext会更有意义,具体取决于你的确切解决方案

0

如果你想在查看-First方法使用依赖注入(DI)尽量视图模型定位模式:

public static class ViewModelLocator 
{ 
    public static MainWindowViewModel MainWindowViewModel 
    { 
    get 
    { 
     return ObjectFactory.GetInstance<MainWindowViewModel>(); 
    } 
    } 
}; 

和WPF代码:

<Window 
    ... 
    DataContext="{x:Static Services:ViewModelLocator.MainWindowViewModel}" 
    > 
相关问题