ist in einem abstrakten Ansichtsmodell Basis-Klasse sagen Let Ich habe eine einfache alte Eigenschaft wie folgt:Änderungsmitteilung in MVVM Hierarchies
public Size Size
{
get { return _size; }
set
{
_size = value;
OnPropertyChanged("Size");
}
}
ich dann eine spezifischere Ansichtsmodell erstellen, von der vorherigen vererben, die enthält die folgende Eigenschaft:
public Rect Rectangle
{
get { return new Rect(0, 0, _size.Width, _size.Height); }
}
, jetzt in einigen View-Klasse I binden an die Rectangle
Eigenschaft des oben genannten Ansichtsmodell. Alles funktioniert gut, bis ich die Größe ändere. Wenn Size
ändert, Rectangle
weiß es nicht, und die Änderung wird nicht an die Ansicht weitergegeben. Und da Rectangle
in der Kindklasse ist, kann ich nicht einfach einen OnPropertyChanged("Rectangle")
zum Size
Setzer hinzufügen.
Stellen Sie sich nun vor, dass ich viele verschiedene Eigenschaften wie Rectangle
habe, die alle von Basisklasseneigenschaften abhängen, und dass keine dieser Änderungen propagiert wird. Ich brauche eine leichte und elegante Möglichkeit, Änderungsbenachrichtigungen zu verketten, vorzugsweise eine, die nicht viel Code erfordert und mich nicht dazu zwingt, Abhängigkeitseigenschaften zu verwenden.
Offensichtlich gibt es hier viele hässliche Lösungen - was ich suche ist etwas sauberes und kluges. Es scheint mir, dass dies ein sehr häufiges Szenario wäre, und es scheint mir, dass es eine MVVM-freundliche Art und Weise, dies zu tun, sein könnte.
Großartige Idee. Ich änderte es ein wenig, um ein Wörterbuch zur Konstruktionszeit (aus Leistungsgründen) zu erstellen, aber das Konzept ist gesund. – Charlie