【问题标题】:Does Window.DataContext and Window.Resource ObjectDataProvider conflictWindow.DataContext 和 Window.Resource ObjectDataProvider 是否冲突
【发布时间】:2011-12-09 02:43:02
【问题描述】:

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

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

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

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

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

当我正在解决我的选项卡控制问题时(我不会在这里对这些细节感到厌烦),我意识到我不知道这两种指向视图模型的方式是否有任何冲突。视图模型的两个独立实例?我不这么认为,因为 ViewModelLocator 持有对 Main 的静态引用。无论如何,我只是想确定我没有犯“新手”错误。 谢谢, 吉姆

【问题讨论】:

    标签: wpf data-binding mvvm mvvm-light


    【解决方案1】:

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

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

    干杯, 洛朗

    【讨论】:

    • 你是对的。我得到了我的视图模型的两个实例。事实证明,这让我的选项卡控件感到困惑。所以它为我解决了这个问题。谢谢您的帮助。另外,感谢您的框架。
    猜你喜欢
    • 2011-09-25
    • 2013-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多