每当我使用 MVVM Light 时,我总是会遇到最奇怪的事情。我创建了一个 ViewModelLocator 并在 app.xaml 中注册为静态资源:
<viewmodel:WindowsViewModelLocator x:Key="ViewModelLocator" />
一切正常,这意味着在启动时静态资源已注册,我可以使用它,我可以通过转到
App.Current.Resources["ViewModelLocator"]
但随后突然、随机、永久地停止工作。每个项目都发生在我身上,但我还没有确定原因,因为我无法确定我为使其停止工作而采取的一致行动,也无法找到任何方法将其恢复到任何状态它工作的时候我有吗...
继续前进的唯一方法是在启动时手动注册资源,如下所示:
if (!Resources.ContainsKey("ViewModelLocator") || Resources["ViewModelLocator"] == null) Resources.Add("ViewModelLocator", new WindowsViewModelLocator());
最后一切都重新开始工作,通常这就是它的结束。
但它每次都会发生。
我在定位器的构造函数中设置了一个断点,它肯定没有被击中......有人知道我可能做错了什么吗?
编辑:我终于找到了实际的异常:
GalaSoft.MvvmLight.Extras.DLL 中出现了“Microsoft.Practices.ServiceLocation.ActivationException”类型的第一次机会异常
这使我找到了我在下面发布的答案。谢谢!