【问题标题】:Set datacontext of child UserControl in WPF在 WPF 中设置子 UserControl 的数据上下文
【发布时间】:2014-06-29 02:35:17
【问题描述】:

我无法设置 UserControl 的数据上下文(UserControl 嵌套在其他 UserControl 中)。

我有以下结构:

视图/视图模型:

MainControl <-> MainViewModel <br>
UserControlA <-> ViewModelA<br>
UserControlB <-> ViewModelB<br><br>
ViewModels:<br>

ViewModelBViewModelA 的属性 MainViewModel 在ctor 中实例化ViewModelAViewModelB

查看次数:
MainControl 包含 UserControlA,而 UserControlA 又包含 UserControlB MainControlViewModelA 分配为数据上下文(这按预期工作)

<!-- MainControl Xaml-->
<UserControl x:Name="MainControl">

<views:UserControlA DataContext="{Binding ViewModelA}" />

</UserControl>

UserControlA 中我做与MainControl 相同的事情,绑定数据上下文 的UserControlB 到它的ViewModel,这是ViewModelA 中的一个属性 这没有按预期工作......

   <!-- USerControlA Xaml-->
    <UserControl>
    .....
    .....

    <views:UserControlB DataContext="{Binding DataContext.ViewModelB}" /> 

   </UserControl>

【问题讨论】:

    标签: wpf wpf-controls


    【解决方案1】:

    将 UserControlB 的数据上下文绑定更改为:

    <UserControl>
        <views:UserControlB DataContext="{Binding ViewModelB}" /> 
    </UserControl>
    

    【讨论】:

    • 感谢 Stuart,事实证明,我绑定 DataContext 的方式是一个愚蠢的拼写错误。我刚读完一篇关于调试绑定错误的文章,这也有帮助。这里是[Debugging Binding Errors]wpf-tutorial.com/data-binding/debugging
      我同意你的观点,不需要DataContext.ViewModelB,只需使用ViewModel就足够了。
    猜你喜欢
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-12-16
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多