在WPF中设置子UserControl的数据上下文

7

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

我的结构如下:

视图/视图模型:

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

ViewModelBViewModelA 的一个属性。

MainViewModelctor 中实例化了 ViewModelAViewModelB

视图:
MainControl 包含 UserControlA,而 UserControlA 又包含 UserControlBMainControlViewModelA 分配为数据上下文(这样可以正常工作)。

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

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

</UserControl>

UserControlA中我做的和MainControl一样,绑定了UserControlB的数据上下文到其ViewModel,而这个ViewModel是在ViewModelA中的一个属性。 但是结果不如预期...
   <!-- USerControlA Xaml-->
    <UserControl>
    .....
    .....

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

   </UserControl>
1个回答

8
将UserControlB的数据上下文绑定更改为:
<UserControl>
    <views:UserControlB DataContext="{Binding ViewModelB}" /> 
</UserControl>

谢谢 Stuart,事实证明这只是我绑定DataContext的方式拼写错误。我刚刚读了一篇关于调试绑定错误的文章,也有所帮助。这是链接[Debugging Binding Errors]http://www.wpf-tutorial.com/data-binding/debugging/ <br/> 我同意你的观点,在绑定中没有必要使用DataContext.ViewModelB,只使用ViewModel就足够了。 - Masood Alam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接