Freigeben über


Eigenschaftenbearbeitungsarchitektur

Das visuelle Bearbeiten von Objekteigenschaften ist ein wichtiges Feature im WPF Designer für Visual Studio. In diesem Thema wird die Architektur des WPF-Designer-Eigenschaftenbearbeitungssystems beschrieben.

Eigenschafteneintrag

Die PropertyEntry-Klasse stellt die Eigenschaft selbst dar. Die PropertyValue-Klasse stellt den zugrunde liegenden Wert einer Eigenschaft dar.

Kategorie-Editoren

Ein Kategorie-Editor ermöglicht es dem Endbenutzer, mehrere Eigenschaften innerhalb einer Kategorie gleichzeitig zu bearbeiten. Die einem Kategorie-Editor zugeordneten Eigenschaften werden nicht an anderer Stelle im Eigenschaftenfenster angezeigt. Eigenschaften, die nicht durch diesen Kategorie-Editor bearbeitet werden, sind sichtbar und können bearbeitet werden. Sie können angeben, welche Eigenschaften in einer Kategorie durch einen Kategorie-Editor bearbeitet werden.

Eigenschaftswert-Editoren

Ein Eigenschaftswert-Editor definiert, wie ein bestimmter Typ im Eigenschaftenfenster eines visuellen Designers angezeigt und bearbeitet wird. Eigenschaftswert-Editoren spielen in WPF-Designer eine Rolle, die der Rolle der UITypeEditor-Klasse in der System.ComponentModel-Architektur ähnelt. Die WPF-Designer-Editoren sind jedoch nicht vom System.ComponentModel und der Windows Forms-Architektur abhängig.

Ein PropertyValueEditor besteht aus den in der folgenden Tabelle aufgelisteten Komponenten.

Komponente des Eigenschaftswert-Editors

Beschreibung

Inline-Editor (auch Ansicht genannt)

Ein Editor, der im gleichen physischen Bereich gehostet wird wie die Ansicht im Hosting-Eigenschaftenfenster. Ein Beispiel ist der Margin-Eigenschaften-Editor.

Erweiterter Editor

Ein Editor, der normalerweise nicht direkt gehostet wird. Dies entspricht dem Dropdown-Editor in der System.ComponentModel-Architektur. Ein Beispiel ist der HorizontalAlignment-Eigenschaften-Editor.

Dialogfeld

Ein Editor, der in seinem eigenen Dialogfeld implementiert ist. Ein Beispiel ist der RowDefinitions-Eigenschaften-Editor.

Sie können Standardwerte für die Ansicht und den Inline-Editor verwenden. Ein PropertyValueEditor muss keinen erweiterten Editor bereitstellen.

Jede Komponente ist eine WPF-DataTemplate. Die einzelnen Komponenten sind unabhängig voneinander und können unabhängig voneinander verwendet werden.

Das Hosting-Eigenschaftenfenster stellt den Rahmen um die Ansicht und die Editoren bereit. Damit kann der Host einen konsistenten Stil für alle Editoren bereitstellen, und verschiedene Hosts können unterschiedliche Stile bereitstellen. So stellen z. B. Expression Blend und Visual Studio unterschiedliche Darstellungen und Verhaltensweisen für ihre jeweiligen Eigenschaftenfenster bereit.

WPF-Datenbindung und ein Standardsatz von WPF-RoutedCommand-Objekten stellen den Kommunikationsmechanismus zwischen dem Host und den PropertyValueEditor-Komponenten bereit.

Im einfachsten Fall kann es sich bei einer Komponente eines Wert-Editors um eine DataTemplate handeln, die WPF-Standardsteuerelemente enthält. In komplexeren Fällen kann ein Teil eines Typs eine DataTemplate sein, die auf das benutzerdefinierte Steuerelement verweist.

Sie können drei verschiedene Typen von Eigenschaftswert-Editoren implementieren, die in der folgenden Tabelle aufgeführt sind.

Typ des Eigenschaftswert-Editors

Beschreibung

Einfach

Der Eigenschaftswert-Editor besteht aus einem Inline-Editor.

Erweitert

Der Eigenschaftswert-Editor besteht aus einem Inline-Editor und einem erweiterten Editor.

Dialogfeld

Der Eigenschaftswert-Editor besteht aus einem Inline-Editor und einem Dialogfeld.

Infrastrukturklassen

Infrastrukturklassen sind für jede Implementierung eines Eigenschaftswert-Editors erforderlich. Diese Klassen werden in der folgenden Tabelle aufgeführt und enthalten die Hauptinfrastruktur für das Hosten oder Erstellen von Wert-Editoren.

Infrastrukturklasse

Beschreibung

PropertyValue

Stellt den Wert einer Eigenschaft dar.

PropertyValueEditor

Die Basisklasse für Wert-Editoren.

PropertyValueEditorCommands

RoutedCommand-Typen und Standardimplementierungen von Handlern für diese Befehle.

DialogPropertyValueEditor

Die abstrakte Basisklasse für Dialogfeld-Wert-Editoren

  • Definiert den ShowDialog-Befehl und einen Standardhandler für diesen Befehl.

  • Besitzt eine Standardansicht und eine Standardvorlage für den Inline-Editor.

  • Markiert einen PropertyValueEditor als einen Dialogfeld-Editor.

Implementierung des Eigenschaftswert-Editors

In den folgenden Abschnitten werden Aspekte der Implementierung eines Eigenschaftswert-Editors beschrieben.

Value, StringValue und Collection

Das PropertyValue-Modell hat drei Eigenschaften, die sich auf den Wert der Eigenschaft beziehen. Die PropertyValue-Eigenschaften sind in der folgenden Tabelle aufgeführt.

PropertyValue-Eigenschaft

Beschreibung

Value

Eine Objektdarstellung der Daten

StringValue

Eine Zeichenfolgendarstellung der Daten, die für die Anzeige oder die Serialisierung verwendet werden kann

Collection

Eine Auflistungsdarstellung der Daten

StringValue ist eine Zeichenfolgendarstellung der Daten, die für die Anzeige oder die Serialisierung verwendet werden kann. Value und StringValue festgelegte Aufrufe zwischen.

Der Cache für StringValue wird geleert, wenn Value festgelegt wird. Ein häufiges Szenario besteht darin, dass das dynamische Aktualisieren der Eigenschaft, die gerade entworfen wird (während der Benutzer Eingaben macht), unterstützt wird, wenn der StringValue an die Texteingabe datengebunden ist. Die zugrunde liegende Eigenschaft wird jedoch nur festgelegt, wenn der dynamische Text bestimmten Kriterien entspricht.

Anforderungen an den Eigenschaftswert-Editor

Ein ordnungsgemäß implementierter Eigenschaftswert-Editor muss die folgenden Anforderungen erfüllen.

  • Der Eigenschaftswert-Editor muss so beschaffen sein, dass Teile des Inline-Editors und des erweiterten Editors unabhängig voneinander verwendet werden können.

  • Ein Eigenschaftswert-Editor darf keine Zustandsinformationen speichern. Eigenschaftswert-Editoren sind zustandsfrei, können von einer Hostimplementierung zwischengespeichert und über mehrere Eigenschaftswerte hinweg wiederverwendet werden.

  • Ein Eigenschaftswert-Editor darf nicht davon ausgehen, dass nur ein Steuerelement eines Teils des Wert-Editors (Ansicht/Inline/erweitert) zu einem Zeitpunkt aktiv ist. In einem Dialogfeld können der Ansichtsteil, der Inlineteil und der erweiterte Benutzeroberflächenteil gleichzeitig aktiv sein.

  • Ein als Teil eines Eigenschaftswert-Editors implementiertes Steuerelement darf keine Zustandsinformationen speichern. Ein als Teil eines Wert-Editors implementiertes Steuerelement darf nicht davon ausgehen, dass es nur an einen Eigenschaftswert gebunden wird. Steuerelemente können wiederverwendet werden, um verschiedene Eigenschaftswerte zu ändern. Alle zwischengespeicherten Informationen sollten entfernt werden, wenn das Datenmodell aktualisiert wird.

  • Ein als Teil eines Eigenschaftswert-Editors implementiertes Steuerelement darf keine Annahmen über den Host oder seine übergeordneten Steuerelemente machen. Die einzigen Kommunikationsmechanismen, die verwendet werden sollten, sind das PropertyValue-Datenmodell (über den DataContext) sowie der Standardsatz von Befehlen.

Siehe auch

Referenz

PropertyEntry

PropertyValue

PropertyValueEditor

Weitere Ressourcen

WPF-Designer-Erweiterbarkeit

Erstellen von benutzerdefinierten Editoren

Beispiele für WPF-Designer-Erweiterbarkeit