Reagieren auf und Propagieren von Änderungen

Sie können Code schreiben, der beim Erstellen, Löschen oder Aktualisieren eines Elements die Änderung an andere Teile des Modells oder an externe Ressourcen wie Dateien, Datenbanken oder andere Komponenten propagiert.

Verweis

Als Richtlinie sollten Sie diese Techniken in der folgenden Reihenfolge berücksichtigen:

Verfahren Szenarien Weitere Informationen finden Sie unter
Definieren einer berechneten Domäneneigenschaft. Eine Domäneneigenschaft, deren Wert aus anderen Eigenschaften im Modell berechnet wird. Beispielsweise ein Preis, der die Summe der Preise verwandter Elemente ist. Berechnete und benutzerdefinierte Speichereigenschaften
Definieren einer benutzerdefinierten Speicherdomäneneigenschaft Eine Domäneneigenschaft, die in anderen Teilen des Modells oder extern gespeichert ist. Beispielsweise könnten Sie eine Ausdruckszeichenfolge parsen, um eine Baumstruktur im Modell zu erstellen. Berechnete und benutzerdefinierte Speichereigenschaften
Außer Kraft setzen von Änderungshandlern wie OnValueChanging und OnDeleting Verschiedene Elemente synchron halten und externe Werte mit dem Modell synchron halten.

Einschränken von Werten auf definierte Bereiche.

Wird unmittelbar vor und nach dem Ändern von Eigenschaftswerten und anderen Änderungen aufgerufen. Sie können die Änderung abbrechen, indem Sie eine Ausnahme auslösen.
Handler für Wertänderungen von Domäneneigenschaften
Regeln Sie können Regeln definieren, deren Ausführung kurz vor dem Ende einer Transaktion, in der eine Änderung erfolgt ist, in die Warteschlange eingereiht werden. Sie werden nicht beim Rückgängigmachen (Undo) oder Wiederholen (Redo) ausgeführt. Verwenden Sie sie, um einen Teil des Speichers mit einem anderen zu synchronisieren. Regeln propagieren Änderungen im Modell
Speicherereignisse Der Modellierungsspeicher erstellt Benachrichtigungen zu Ereignissen, z. B. dem Hinzufügen oder Löschen eines Elements oder Links oder dem Ändern des Werts einer Eigenschaft. Das Ereignis wird auch beim Rückgängigmachen (Undo) oder Wiederholen (Redo) ausgeführt. Verwenden Sie Speicherereignisse, um Werte zu aktualisieren, die sich nicht im Speicher befinden. Ereignishandler propagieren Änderungen außerhalb des Modells
.NET-Ereignisse Formen verfügen über Ereignishandler, die auf Mausklicks und andere Gesten reagieren. Sie müssen für diese Ereignisse jedes Objekt registrieren. Die Registrierung erfolgt in der Regel in einer Überschreibung von InitializeInstanceResources und muss für jedes Element erfolgen.

Diese Ereignisse treten normalerweise außerhalb einer Transaktion auf.
Gewusst wie: Abfangen eines Klicks auf eine Form oder einen Decorator
Begrenzungsregeln Begrenzungsregeln limitieren die Grenzen von Formen. BoundsRules schränken Position und Größe von Formen ein
Auswahlregeln Auswahlregeln schränken ein, was Benutzer auswählen können. Gewusst wie: Zugreifen auf die und Einschränken der aktuellen Auswahl
OnAssocatedPropertyChanged Geben Sie die Zustände der Modellelemente mithilfe von Features von Formen und Connectors an, z. B. Schatten, Pfeilspitzen, Farbe sowie Linienbreiten und -stil. Aktualisieren von Formen und Konnektoren zur Darstellung des Modells

Vergleichen von Regeln und Speicherereignissen

Änderungsbenachrichtigungen, Regeln und Ereignisse werden ausgeführt, wenn Änderungen in einem Modell auftreten.

Regeln werden normalerweise an der Endtransaktion angewendet, in der die Änderung stattgefunden hat, und Ereignisse werden angewendet, nachdem Änderungen in einer Transaktion committet wurden.

Verwenden Sie Speicherereignisse, um das Modell mit Objekten außerhalb des Speichers zu synchronisieren, und Regeln, um die Konsistenz im Speicher zu gewährleisten.

  • Erstellen benutzerdefinierter Regeln Sie erstellen eine benutzerdefinierte Regel als abgeleitete Klasse aus einer abstrakten Regel. Außerdem müssen Sie das Framework über die benutzerdefinierte Regel benachrichtigen. Weitere Informationen finden Sie unter Regeln propagieren Änderungen im Modell.

  • Abonnieren von Ereignissen Bevor Sie ein Ereignis abonnieren können, erstellen Sie einen Ereignishandler und Delegat. Verwenden Sie dann die EventManagerDirectory-Eigenschaft, um das Ereignis zu abonnieren. Weitere Informationen finden Sie unter Ereignishandler propagieren Änderungen außerhalb des Modells.

  • Rückgängigmachen von Änderungen Wenn Sie eine Transaktion rückgängig machen, werden Ereignisse ausgelöst, aber keine Regeln angewendet. Wenn eine Regel einen Wert ändert und Sie diese Änderung rückgängig machen, wird der Wert beim der Rückgängigmachen auf den ursprünglichen Wert zurückgesetzt. Wenn ein Ereignis ausgelöst wird, müssen Sie den Wert manuell zurück in seinen ursprünglichen Wert ändern. Weitere Informationen zu Transaktionen und zum Rückgängigmachen finden Sie unter Gewusst wie: Verwenden von Transaktionen zum Aktualisieren des Modells.

  • Übergeben von Ereignisargumenten an Regeln und Ereignisse Sowohl an Ereignisse als auch an Regeln wird ein EventArgs-Parameter übergeben, der Informationen darüber enthält, wie sich das Modell geändert hat.