2009-07-23 13 views
0

Ich verwende MVVM in meiner WPF-Anwendung.
Ich habe ein Fenster, das eine Ansicht darin hat. In dieser Ansicht kann ein Wert geändert werden, und ich werde es zu einem Text in meinem Hauptfenster binden:WPF Bindung an Eigenschaft und Einstellung einer anderen

<TextBox 
    Text="{Binding Path=myViewModel.MyValue"> 
</TextBox> 

Jetzt würde ich diesen myViewModel.MyValue auf eine Eigenschaft in meinem Hauptfenster Ansicht Modell binden muß, so dass ich damit einen Filter in einer Sammlung durchführen kann.

Kann ich einen Setter oder andere Sache, die den Wert meines MainViewModel.Property setzt wenn die myViewModel.MyValue Änderungen?
Wenn ja, wie kann ich es tun?

Antwort

1

Bleibt das Ansichtsmodell Ihrer Subansicht im Ansichtsmodell Ihres Hauptfensters? Wenn ja, können Sie diese Dinge einfach durch die Setter auslösen.

Wenn nicht, können Sie möglicherweise eine Vorgängerbindung verwenden und diese von der Benutzeroberfläche aus steuern. Es ist nicht ideal (ich nehme an, Sie versuchen zu vermeiden, dass die Eltern- und Kinderansichten spezifische Kenntnisse voneinander haben), aber es würde funktionieren.

Hier ist ein relatives Beispiel, das relativ einfach ist. Diese können sehr komplex werden. Mit Vorsicht: http://www.charlespetzold.com/blog/2006/04/101102.html

Wenn Sie tun entscheiden, die Relative Weg zu gehen, sollten Sie wissen, wie Bindungen zu debuggen. Verwenden Sie dazu this link. Sie gibt mehrere Techniken dafür, aber wenn Sie .NET 3.5 verwenden, würde ich empfehlen, diese Methode (am Ende des Artikels) zu verwenden.

0

Bindung erneut verwenden, diesmal aus Code. Sehen Sie sich die FrameworkElement.SetBinding-Memberfunktion an.

+0

Dies ist nichts, was Sie in einer MVVM-Anwendung tun würden. Ein ViewModel hätte keine Kenntnisse der View und umgekehrt. –

Verwandte Themen