Frage

Ich habe eine übergeordnete Ansicht, die eine Kinderansicht in XAML definiert. Die Kinderansicht hat eine DependencyProperty Das ist an das ViewModel der Elternansicht gebunden. Dieser Wert wird jedoch auch durch das ViewModel der Kinderansicht benötigt.

<custom:Parent>
  <custom:Child ChildId="{Binding ParentFooId}" ... />
</custom:Parent>

ChildId wird als Abhängigkeitseigenschaft der implementiert ChildView Kontrolle. Wenn die ChildViewModel Bedürfnisse ParentFooId, Was ist der richtige MVVM -Weg, um es zu erhalten?

Ich möchte das nicht werfen DataContext des ChildView in ein ChildViewModel und Wert in a festlegen OnChildIdChanged Handler des ChildView. Das scheint mir nicht sehr mvvm zu sein.

Die andere Alternative, an die ich dachte, war, eine neue zu schaffen ChildViewModel mit dem Wert und setzen Sie ihn als die DataContext in dem OnParentFooIdChanged Ereignis (in der ParentViewModel); Aber das scheint auch nicht ganz richtig zu sein, da die ViewModels der Aussicht nicht ahnungslos sein sollen (und daher nichts über nichts über wissen sollen DataContexts).

Es scheint, als würde mir etwas Offensichtliches fehlen ...

War es hilfreich?

Lösung

Wenn ich die Frage korrekt verstehe, müssen Sie nur das Modell für untergeordnete Ansicht innerhalb des übergeordneten Ansichtsmodells erstellen, indem Sie einen Verweis auf das übergeordnete Ansichtsmodell übergeben und behalten. Auf diese Weise können Sie auf jede Eigenschaft des übergeordneten Ansichtsmodells aus dem untergeordneten Ansichtsmodell verweisen und an beide in der Kinderansicht binden.

Andere Tipps

Wenn Sie einfach versuchen, Daten von einer Abhängigkeitseigenschaft an Ihr Ansichtsmodell zu übergeben, würde ich das Ereignis von PropertyChangedCallback verwenden. Fügen Sie einen Handler hinzu, der die geänderten Daten an Ihr Ansichtsmodell sendet. Ich kann Ihre Absicht jedoch missverstehen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top