WPF中到两个不同DataContext的多绑定



MultiBinding中,如果DataContext设置为VM1,并且C是其属性,是否可以对不同的DataContext(如VM2)进行第二次绑定,并将其绑定到VM2中的D属性?

<MultiBinding Converter="{StaticResource UnitConverter}">
        <Binding Path="C"/>
        <Binding Path="D"/>
</MultiBinding>

快速回答,是的!例如,如果您有一个带有Datacontext VM2的网格,并且在其中有一个具有Datacontext VM1的Stackpanel。现在,您可以使用RelativeSource通过向上遍历可视化树来获得正确的Datacontext。我不在我的windows笔记本电脑atm上,但它应该是这样的。。

<MultiBinding Converter="{StaticResource UnitConverter}">
    <Binding Path="DataContext.D" RelativeSource="{RelativeSource Mode=FindAncestor, AncestorType=Grid}"/>
    <Binding Path="C"/>
</MultiBinding>

我希望这能帮助

这个问题也可能有帮助:如何在多绑定中获得父值

对不起。确切的答案是"不可能"。您所说的是不可能的,因为数据上下文被设置为某个视图模型,比如VM1,并且模板将只在该数据上下文中寻找一些属性。

<MultiBinding Converter="{StaticResource UnitConverter}">
        <Binding Path="C"/>
        <Binding Path="D"/>
</MultiBinding>

在上面的代码中,C和D应该在同一个数据上下文中。或者,您需要创建一个包含子视图模型属性的新视图模型,以便可以访问子视图模型的属性,如下所示:

<MultiBinding Converter="{StaticResource UnitConverter}">
        <Binding Path="VM1.C"/>
        <Binding Path="VM2.D"/>
</MultiBinding>

其中VM1和VM2是作为数据上下文视图模型中的属性创建的视图模型实例。

相关内容

  • 没有找到相关文章

最新更新