0

由于 Visual Studio 2015 处于 RC 状态,我不确定我是否发现了错误或者我的项目有问题。

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

通常我会在 Page Xaml 中用这样的一行来绑定它:

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

然而,虽然我在 VS2015 中尝试之前从未遇到过这个问题,但它不适用于我为 Windows 10 创建的新项目。

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

我在定位器中为 MyViewModel 的静态属性 getter 设置了一个断点,它从未被调用...

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

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

4

1 回答 1

0

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

这是我所拥有的:

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

我不确定这次我在想什么(喝酒)使它们成为静态,但是从定位器属性中的 get 中删除该关键字立即解决了问题。

于 2015-07-05T16:49:40.350 回答