在编写MVVM WPF应用程序时,总是需要将视图模型设置为视图的数据上下文。对我来说,通常是在代码中。但我意识到如果我将视图模型声明为xaml中的静态资源并在那里设置绑定,我就不再需要在代码中执行它了。这意味着我不必在某个地方协调视图和视图模型,就像在App中一样。
这样做是否可以接受?
谢谢!
答案 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}"
>