加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何直接绑定到子视图模型?

发布时间:2020-12-16 01:59:53 所属栏目:百科 来源:网络整理
导读:目标是直接访问子ViewModel中的属性,而不会丢失整个ViewModel结构的上下文. 目前,我在字典中有一个资源,它包含对我用作整个应用程序的数据上下文的ViewModel的引用. 所以,我对每个视图的datacontext看起来像这样: DataContext="{StaticResource mainViewMod
目标是直接访问子ViewModel中的属性,而不会丢失整个ViewModel结构的上下文.

目前,我在字典中有一个资源,它包含对我用作整个应用程序的数据上下文的ViewModel的引用.

所以,我对每个视图的datacontext看起来像这样:

DataContext="{StaticResource mainViewModel}"

在我的ViewModel中,我嵌套了子ViewModel,如下所示:

public class ParentViewModel {
    public ChildVM ChildVM { get; set; }
    public ParentVM(){
        ChildVM = new ChildViewModel();
    }
}

public class ChildViewModel {
    public string SomeProperty { get; set; }
}

在我看来,我可以从数据上下文中访问属性,如下所示:

<Button Text="{Binding ChildVM.SomeProperty}"/>

但这非常重复.我希望能够做到:

<Button Text="{Binding SomeProperty}"/>

我的datacontext设置为像这样的伪:

DataContext="{StaticResource MainViewModel,Path=ParentVM.ChildVM}"

有任何想法吗?

解决方法

您可以为控件组更改DataContext

<!-- DataContext is ParentViewModel -->
<Grid>
   <!-- change DataContext to ChildViewModel -->
   <Grid DataContext="{Binding Path=ChildVM}">
      <Button Content="{Binding SomeProperty}"/>
      <Button Content="{Binding AnotherChildProperty}"/>
   </Grid>
</Grid>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读