在MultiBinding
中,如果DataContext设置为VM1
且C
是其属性,是否可以对{{1}之类的其他DataContext进行第二次绑定并将其绑定到VM2
中的D
属性?
VM2
答案 0 :(得分:4)
快速回答,是的!例如,如果你有一个带有Datacontext
VM2的网格,并且在其中你有一个带有Datacontext
VM1的Stackpanel。现在,您可以使用RelativeSource
通过可视化树向上移动来获取正确的Datacontext
。
我不是在我的Windows笔记本电脑上,但看起来应该是这样的......
<MultiBinding Converter="{StaticResource UnitConverter}">
<Binding Path="DataContext.D" RelativeSource={RelativeSource Mode=FindAncestor, TargetType=Grid/>
<Binding Path="C"/>
</MultiBinding>
我希望这有帮助
这个问题也可能有所帮助:How to get a parent value in multibinding
答案 1 :(得分:2)
对不起确切的答案是不可能。
您所说的是不可能的,因为datacontext设置为某个视图模型,如Server=10.10.10.123,1433\myInstanceName;
,模板将仅在该数据上下文中查找某些属性。
VM1
在上面的代码中,C和D应该在同一个datacontext中。否则,您需要创建一个包含子视图模型属性的新视图模型,以便可以访问子视图模型属性,如下所示:
<MultiBinding Converter="{StaticResource UnitConverter}">
<Binding Path="C"/>
<Binding Path="D"/>
</MultiBinding>
其中VM1和VM2是在datacontext视图模型中作为属性创建的视图模型实例。