是否可以将视图模型声明为视图中的静态资源?

时间:2009-07-24 14:55:13

标签: c# wpf mvvm

在编写MVVM WPF应用程序时,总是需要将视图模型设置为视图的数据上下文。对我来说,通常是在代码中。但我意识到如果我将视图模型声明为xaml中的静态资源并在那里设置绑定,我就不再需要在代码中执行它了。这意味着我不必在某个地方协调视图和视图模型,就像在App中一样。

这样做是否可以接受?

谢谢!

3 个答案:

答案 0 :(得分:1)

我会这么说。它有点意味着View中ViewModel的具体知识,但你必须以某种方式设置它,我喜欢这里的无代码方法。

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

如果要在View-First方法中使用依赖注入(DI),请尝试ViewModel定位器模式:

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

和WPF代码:

<Window 
    ...
    DataContext="{x:Static Services:ViewModelLocator.MainWindowViewModel}"
    >