Window.DataContext和Window.Resource ObjectDataProvider是否冲突

时间:2011-12-09 02:43:02

标签: wpf data-binding mvvm mvvm-light

我仍然对WPF感到满意,所以这可能是一个愚蠢的问题。我正在跟踪选项卡控件问题的来源,并发现我不知道标题中问题的答案。

我的Mvvm-Lite项目模板通常放在Windows开始标记中:

DataContext="{Binding Source={StaticResource Locator}, Path=Main}"

从其他地方(我真的不记得了)我有这个方便的静态资源:

<ObjectDataProvider x:Key="src" ObjectType="vm:MainViewModel" />

虽然我正在解决我的标签控件问题(我不会在这里讨论这些细节)但我意识到我不知道这两种指向视图模型的方式是否以任何方式形成。视图模型的两个独立实例?我不这么认为是因为ViewModelLocator持有对Main的静态引用。无论如何,我只是想确定我没有犯下“绿色”的错误。 谢谢, 吉姆

1 个答案:

答案 0 :(得分:0)

我很确定这会创建两个不同的实例。您可以通过在MainViewModel构造函数中放置断点并在调试模式下运行应用程序来轻松验证这一点。

ObjectDataProvider是在MVVM流行之前推出的。我认为WPF中的许多对象都被MVVM淘汰了,因为现在我们在ViewModel层的代码中创建了这些对象和属性。在你的情况下,我猜你可能不需要ObjectDataProvider,但可以在任何地方使用ViewModelLocator.Main。

干杯, 劳伦