Framework-Eigenschaftenmetadaten

Die Optionen für Framework-Eigenschaftenmetadaten werden für die Eigenschaften von Objektelementen gemeldet, die in der WPF-Architektur (Windows Presentation Foundation) auf WPF-Frameworkebene vorhanden sein sollen. Im Allgemeinen bedeutet die Bezeichnung WPF-Frameworkebene, dass Funktionen wie das Rendering, die Datenbindung und die Verbesserungen des Eigenschaftensystems von WPF-Präsentations-APIs und von ausführbaren Dateien behandelt werden. Framework-Eigenschaftenmetadaten werden von diesen Systemen zur Ermittlung funktionsspezifischer Merkmale von bestimmten Elementeigenschaften abgefragt.

Voraussetzungen

In diesem Artikel wird vorausgesetzt, dass Sie sich mit Abhängigkeitseigenschaften aus Sicht von vorhandenen Abhängigkeitseigenschaften von Consumern in WPF-Klassen (Windows Presentation Foundation) auskennen und Übersicht über Abhängigkeitseigenschaften gelesen haben. Folgenden Artikel sollten Sie auch gelesen haben: Metadaten für Abhängigkeitseigenschaften.

Was wird von Framework-Eigenschaftenmetadaten übermittelt?

Framework-Eigenschaftenmetadaten können in folgende Kategorien unterteilt werden:

  • Berichtslayouteigenschaften, die sich auf ein Element auswirken (AffectsArrange, AffectsMeasure, AffectsRender). Sie können diese Flags in Metadaten einstellen, wenn sich die Eigenschaft auf die jeweiligen Aspekte auswirken und Sie auch die MeasureOverride / ArrangeOverride-Methoden in Ihrer Klasse implementieren, um spezifisches Rendering-Verhalten und Informationen des Layoutsystems anzugeben. In der Regel würde eine solche Implementierung nach Eigenschafteninvalidierungen in Abhängigkeitseigenschaften suchen, wo die Layouteigenschaften in den Eigenschaftenmetadaten wahr waren. Nur diese Validierungen würde einen neuen Layoutdurchlauf erforderlich machen.

  • Berichtslayouteigenschaften, die sich auf das übergeordnete Element eines Elements auswirken (AffectsParentArrange, AffectsParentMeasure). Einige Beispiele, in denen diese Kennzeichen standardmäßig festgelegt werden, sind FixedPage.Left und Paragraph.KeepWithNext.

  • Inherits. Standardmäßig erben Abhängigkeitseigenschaften keine Werte. OverridesInheritanceBehavior ermöglicht es dem Vererbungspfad, auch in eine visuelle Struktur zu gelangen, was für einige Szenarios zum Zusammenlegen von Steuerelementen erforderlich ist.

    Hinweis

    Im Kontext mit Eigenschaftswerten bedeutet der Begriff „erbt“ für Abhängigkeitseigenschaften etwas Bestimmtes. Das bedeutet, dass untergeordnete Elemente den tatsächlichen Abhängigkeitseigenschaftswert von übergeordneten Elementen erben können, aufgrund einer Funktionalität der WPF-Framework-Ebene des WPF-Eigenschaftensystems. Dies hat nichts mit verwaltetem Codetypen und Vererbung der Member über abgeleitete Typen zu tun. Weitere Informationen finden Sie unter Vererbung von Eigenschaftswerten.

  • Berichtsdatenbindungseigenschaften (IsNotDataBindable, BindsTwoWayByDefault). Standardmäßig unterstützen Abhängigkeitseigenschaften im Framework die Datenbindung mit einem unidirektionalen Bindungsverhalten. Sie können möglicherweise die Datenbindung deaktivieren, wenn es dafür überhaupt kein Szenario gäbe (da sie flexibel und erweiterbar vorgesehen sind, sind nicht viele Beispiele für solche Eigenschaften in den standardmäßigen WPF-APIs). Legen Sie möglicherweise die Bindung fest, um einen bidirektionalen Standard für Eigenschaften zu erhalten, die das Verhalten eines Steuerelements seiner Komponententeile verknüpfen (IsSubmenuOpen ist ein Beispiel) oder wo die bidirektionale Bindung das allgemeine und erwartete Szenario für Benutzer ist (Text ist ein Beispiel). Das Ändern der auf die Datenbindung bezogenen Metadaten beeinflusst nur den Standardwert. Bei einer Basis pro Bindung kann dieser Standardwert immer geändert werden. Weitere Informationen zu den Bindungsmodi und zur Bindung im Allgemeinen finden Sie unter Übersicht zur Datenbindung.

  • Berichte, ob die Eigenschaften von Anwendungen oder Diensten, die die Erfassung unterstützen, erfasst werden sollen (Journal). Für allgemeine Elemente ist Journaling nicht standardmäßig aktiviert, aber es ist selektiv für bestimmte Benutzereingabe-Steuerelemente aktiviert. Diese Eigenschaft soll von Erfassungsdiensten gelesen werden, einschließlich der WPF-Implementierung von Erfassungen, und wird in der Regel auf Benutzersteuerelemente festgelegt, darunter Auswahlmöglichkeiten des Benutzers in Listen, die über Navigationsschritte hinweg beibehalten werden soll. Informationen zur Erfassung finden Sie unter Übersicht über die Navigation.

Lesen von FrameworkPropertyMetadata

Jede der oben verbundenen Eigenschaften ist die spezifisch verbundene Eigenschaften, die die FrameworkPropertyMetadata zur unmittelbaren Stammklasse UIPropertyMetadata hinzufügt. Jede dieser Eigenschaften wird standardmäßig false sein. Eine Metadatenanforderung für eine Eigenschaft, in der es wichtig ist, den Wert dieser Eigenschaften zu kennen, sollte versuchen die zurückgegebenen Metadaten in FrameworkPropertyMetadata umzuwandeln und anschließend die Werte der einzelnen Eigenschaften nach Bedarf überprüfen.

Angeben von Metadaten

Beim Erstellen einer neuen Metadateninstanz zum Zweck der Anwendung von Metadaten in einer neuen Registrierung der Abhängigkeitseigenschaft haben Sie die Wahl zur Verwendung dieser Metadatenklasse: Die Basis PropertyMetadata oder eine abgeleitete Klasse so wie FrameworkPropertyMetadata. Im Allgemeinen sollten Sie FrameworkPropertyMetadata verwenden, insbesondere wenn die Eigenschaft jegliche Interaktion mit dem Eigenschaftensystem und WPF-Funktionen aufweist, so wie Layout und Datenbindung. Eine weitere Möglichkeit für anspruchsvollere Szenarios ist die Ableitung aus FrameworkPropertyMetadata für die Erstellung Ihrer eigenen Metadaten-Berichterstellungsklasse mit zusätzlichen Informationen in seinen Membern. Oer Sie könnten PropertyMetadata oderUIPropertyMetadata verwenden, um den Grad des Supports für Funktionen Ihrer Implemetierung mitzuteilen.

Für vorhandene Eigenschaften (AddOwner oderOverrideMetadata-Aufrufe) sollten Sie immer mit dem Metadatentyp überschreiben, den Sie in der ursprünglichen Registrierung verwendet haben.

Wenn Sie eine FrameworkPropertyMetadata-Instanz erstellen, gibt es zwei Möglichkeiten, Metadaten mit den Werten für die einzelnen Eigenschaften aufzufüllen, die die Merkmale der Framework-Eigenschaft kommunizieren:

  1. Verwenden Sie die FrameworkPropertyMetadata-Konstruktorsignatur, die Ihnen einen flags-Parameter erlaubt. Dieser Parameter sollte mit allen gewünschten vereinten Werten der FrameworkPropertyMetadataOptions-Enumerationskennzeichen gefüllt sein.

  2. Verwenden Sie eine der Signaturen ohne einen flags-Parameter und stellen Sie anschließend jeden Bericht zur booleschen Eigenschaft für jede gewünschte Änderung der Merkmale in FrameworkPropertyMetadata auf true ein. Wenn Sie dies tun, müssen Sie diese Eigenschaften festlegen, bevor Elemente mit dieser Abhängigkeitseigenschaft erstellt werden. Die booleschen Eigenschaften verfügen über Lese-/Schreibzugriff, um dieses Verhalten zur Vermeidung des flags-Parameters zu ermöglichen und trotzdem die Metadaten zu füllen, aber die Metadaten müssen vor der Verwendung der Eigenschaft effektiv versiegelt werden. Daher wird der Versuch, Eigenschaften nach der Anforderung von Metadaten festzulegen, ein ungültiger Vorgang sein.

Zusammenführungsverhalten von Framework-Eigenschaftenmetadaten

Wenn Sie Framework-Eigenschaftenmetadaten überschreiben, werden die verschiedenen Metadaten-Eigenschaften entweder zusammengeführt oder ersetzt.

Dieses Verhalten wird von Merge implementiert und kann für abgeleitete Metadatenklassen überschrieben werden.

Weitere Informationen