2016-07-21 32 views
-1

In einem MultiBinding wenn das Datacontext als VM1 und C gesetzt wird, ist eine Eigenschaft, dass, ist es möglich, die zweite Bindung an einer anderen Datacontext wie VM2 und binden es D Eigenschaft in VM2 zu tun ?mehrbindigen zwei verschiedenen Datacontexts in WPF

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

Antwort

3

Schnelle Antwort, ja! Wenn Sie zum Beispiel ein Grid mit Datacontext VM2 haben, und darin haben Sie ein Stackpanel mit Datacontext VM1. Sie können nun RelativeSource verwenden, um die korrekte Datacontext durch Aufrufen der visuellen Struktur zu erhalten. Ich bin auf meinem Windows-Laptop nicht atm, aber es sollte in etwa so aussehen ..

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

ich diese

half hoffen

Diese Frage auch von Hilfe sein kann: How to get a parent value in multibinding

+0

Aber was, wenn der zweite Datenkontext nicht im visuellen Baum definiert ist? – Vahid

+0

Sie müssen eine Art von Bezug darauf haben. Vielleicht eine Eigenschaft im ersten Datacontext, die zum Beispiel zum zweiten View-Modell führt. Ansonsten, soweit ich weiß, ist es leider nicht möglich –

2

Es tut mir leid . Die genaue Antwort lautet Impossible. Was Sie sagen, ist unmöglich, da der Datenkontext auf ein Ansichtsmodell gesetzt wird, sagen wir VM1, und die Vorlage wird nur in diesem Datenkontext nach einer Eigenschaft suchen.

Im obigen Code sollten C und D im selben Datenkontext sein. Sonst müssen Sie ein neues Ansichtsmodell erstellen, die Eigenschaften von Unter Ansicht Modellen enthält, so dass die Unteransichtsmodell Eigenschaften wie unten zugegriffen werden können:

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

wo VM1 und VM2 sind Ansicht Modellinstanzen als Objekte im Datacontext erstellt Modell ansehen.