在Visual Studio 2015中绑定到MVVMLight ViewModelLocator路径时,DataContext为null

问题描述:

由于Visual Studio 2015处于RC状态,因此我不确定是否发现错误或者我的项目出现问题。在Visual Studio 2015中绑定到MVVMLight ViewModelLocator路径时,DataContext为null

我用MVVM Light创建了一个Viewmodel定位器,并公开了返回每个viewmodel实例的静态属性。定位器被注册为app.xaml中的静态资源。

通常我会在页面的XAML,像这样的线路绑定这样的:

DataContext="{Binding Path=MyViewModel, Source={StaticResource ViewModelLocator}}" 

不过,虽然我从来没有与这个工作的问题VS2015尝试它之前,它无法正常工作在我为Windows 10创建的新项目中。

当我运行该项目时,即使在XAML中明确分配了DataContext,它仍然在页面中为null,就像我在其他几十个项目中完成的那样。我检查并且ViewModelLocator静态资源被创建,初始化,并且它的MyViewModel属性也包含我想要的ViewModel。所以在VM或Locator中肯定没有空引用,但由于某种原因,将XAML声明绑定到页面的DataContext似乎被忽略...

我在静态属性getter中设置了一个断点对于定位器中的MyViewModel,它永远不会被调用...

所以我不确定这是VS2015,MVVM Light,Windows 10 SDK或Windows 10本身(当前版本10162)的问题...

有其他人遇到过这个问题吗?

+0

所以完全相同的代码/项目,如果加载到一个较旧的VS和目标的工作,因为它应该? – Noctis

+0

很好的问题,我忘了你可以在以前的版本上建立赢10,我会尝试它并更新问题,谢谢 – SelAromDotNet

+0

听起来像一个很好的起点:) – Noctis

我发现了这个问题。在定位器中获取单个视图模型的属性不应该是静态的,事实上,看看我从未做过的其他项目。

这里是我有什么:

public static MyViewModelType MyViewmodel { get { return ServiceLocator.Current.GetInstance<MyViewModelType>(); } } 

我不知道我在想什么(饮)使其静态,这一次,但是从定位器属性的get删除该关键字立即解决了问题。