Framework-EigenschaftenmetadatenFramework Property Metadata

Die Optionen für Framework-Eigenschaftenmetadaten werden für die Eigenschaften von Objektelementen gemeldet, die in der WPF-Frameworkebene in der Architektur Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) vorhanden sein sollen.Framework property metadata options are reported for the properties of object elements considered to be at the WPF framework level in the Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) architecture. Im allgemeinen umfasst die Bezeichnung auf der WPF-Frameworkebene, dass Features wie Rendering, Datenbindung und Eigenschafts Systemoptimierungen von den WPFWPF Präsentations-APIs und ausführbaren Dateien behandelt werden.In general the WPF framework-level designation entails that features such as rendering, data binding, and property system refinements are handled by the WPFWPF presentation APIs and executables. Framework-Eigenschaftenmetadaten werden von diesen Systemen zur Ermittlung funktionsspezifischer Merkmale von bestimmten Elementeigenschaften abgefragt.Framework property metadata is queried by these systems to determine feature-specific characteristics of particular element properties.

Erforderliche VoraussetzungenPrerequisites

Dieses Thema setzt voraus, dass Sie Abhängigkeitseigenschaften vorhandener Abhängigkeitseigenschaften von Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)-Klassen aus Sicht eines Kunden verstehen und die Übersicht über Abhängigkeitseigenschaften gelesen haben.This topic assumes that you understand dependency properties from the perspective of a consumer of existing dependency properties on Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) classes, and have read the Dependency Properties Overview. Folgenden Artikel sollten Sie auch gelesen haben: Metadaten für Abhängigkeitseigenschaften.You should also have read Dependency Property Metadata.

Was wird von Framework-Eigenschaftenmetadaten übermittelt?What Is Communicated by Framework Property Metadata

Framework-Eigenschaftenmetadaten können in folgende Kategorien unterteilt werden:Framework property metadata can be divided into the following categories:

  • Berichtslayouteigenschaften, die sich auf ein Element (AffectsArrange, AffectsMeasure, AffectsRender) auswirken.Reporting layout properties that affect an element (AffectsArrange, AffectsMeasure, AffectsRender). Sie können diese Flags in den Metadaten festlegen, wenn sich die-Eigenschaft auf die jeweiligen Aspekte auswirkt, und Sie implementieren auch die MeasureOverride / ArrangeOverride-Methoden in der-Klasse, um dem Layoutsystem ein bestimmtes Renderingverhalten und Informationen bereitzustellen.You might set these flags in metadata if the property affects those respective aspects, and you are also implementing the MeasureOverride / ArrangeOverride methods in your class to supply specific rendering behavior and information to the layout system. 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.Typically, such an implementation would check for property invalidations in dependency properties where any of these layout properties were true in the property metadata, and only those invalidations would necessitate requesting a new layout pass.

  • Berichtslayouteigenschaften, die sich auf das übergeordnete Element eines Elements (AffectsParentArrangeAffectsParentMeasure) auswirken.Reporting layout properties that affect the parent element of an element (AffectsParentArrange, AffectsParentMeasure). Einige Beispiele, in denen diese Flags standardmäßig festgelegt werden, sind FixedPage.Left und Paragraph.KeepWithNext.Some examples where these flags are set by default are FixedPage.Left and Paragraph.KeepWithNext.

  • InheritsInherits. Standardmäßig erben Abhängigkeitseigenschaften keine Werte.By default, dependency properties do not inherit values. OverridesInheritanceBehavior ermöglicht es, dass der Vererbungs Weg auch in eine visuelle Struktur übertragen wird, die für einige Szenarios zur Steuerung der Zusammensetzung notwendig ist.OverridesInheritanceBehavior allows the pathway of inheritance to also travel into a visual tree, which is necessary for some control compositing scenarios.

    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 Funktion der WPF-Frameworkebene des WPFWPF-Eigenschaftensystems.The term "inherits" in the context of property values means something specific for dependency properties; it means that child elements can inherit the actual dependency property value from parent elements because of a WPF framework-level capability of the WPFWPF property system. Dies hat nichts mit verwaltetem Codetypen und Vererbung der Member über abgeleitete Typen zu tun.It has nothing to do directly with managed code type and members inheritance through derived types. Weitere Informationen finden Sie unter Vererbung von Eigenschaftswerten.For details, see Property Value Inheritance.

  • Eigenschaften der Berichtsdaten Bindung (IsNotDataBindableBindsTwoWayByDefault).Reporting data binding characteristics (IsNotDataBindable, BindsTwoWayByDefault). Standardmäßig unterstützen Abhängigkeitseigenschaften im Framework die Datenbindung mit einem unidirektionalen Bindungsverhalten.By default, dependency properties in the framework support data binding, with a one-way binding behavior. Sie können die Datenbindung deaktivieren, wenn überhaupt kein Szenario vorhanden wäre (da Sie flexibel und erweiterbar sein sollen, gibt es in den standardmäßigen WPFWPF-APIs nicht viele Beispiele solcher Eigenschaften).You might disable data binding if there were no scenario for it whatsoever (because they are intended to be flexible and extensible, there aren't many examples of such properties in the default WPFWPF APIs). Sie können die Bindung so festlegen, dass Sie eine bidirektionale Standardeinstellung für Eigenschaften hat, die das Verhalten eines Steuer Elements zwischen den Komponenten teilen (IsSubmenuOpen ist ein Beispiel) oder die bidirektionale Bindung das gängige und erwartete Szenario für Benutzer (Text ist ein Beispiel).You might set binding to have a two-way default for properties that tie together a control's behaviors amongst its component pieces (IsSubmenuOpen is an example) or where two-way binding is the common and expected scenario for users (Text is an example). Das Ändern der auf die Datenbindung bezogenen Metadaten beeinflusst nur den Standardwert. Bei einer Basis pro Bindung kann dieser Standardwert immer geändert werden.Changing the data binding–related metadata only influences the default; on a per-binding basis that default can always be changed. Weitere Informationen zu den Bindungsmodi und zur Bindung im Allgemeinen finden Sie unter Übersicht zur Datenbindung.For details on the binding modes and binding in general, see Data Binding Overview.

  • Es wird gemeldet, ob Eigenschaften von Anwendungen oder Diensten, die Journal Unterstützung unterstützen (Journal), erfasst werden sollen.Reporting whether properties should be journaled by applications or services that support journaling (Journal). Für allgemeine Elemente ist Journaling nicht standardmäßig aktiviert, aber es ist selektiv für bestimmte Benutzereingabe-Steuerelemente aktiviert.For general elements, journaling is not enabled by default, but it is selectively enabled for certain user input controls. Diese Eigenschaft soll von Journaling-Diensten gelesen werden, einschließlich der WPFWPF-Implementierung von Journaling, und wird in der Regel auf Benutzersteuerelemente festgelegt, z.B. Auswahlmöglichkeiten des Benutzers in Listen, die über Navigationsschritte hinweg beibehalten werden soll.This property is intended to be read by journaling services including the WPFWPF implementation of journaling, and is typically set on user controls such as user selections within lists that should be persisted across navigation steps. Informationen zur Erfassung finden Sie unter Übersicht über die Navigation.For information about the journal, see Navigation Overview.

Lesen von FrameworkPropertyMetadataReading FrameworkPropertyMetadata

Jede der oben verknüpften Eigenschaften sind die spezifischen Eigenschaften, die der FrameworkPropertyMetadata seiner unmittelbaren Basisklasse UIPropertyMetadatahinzufügt.Each of the properties linked above are the specific properties that the FrameworkPropertyMetadata adds to its immediate base class UIPropertyMetadata. Jede dieser Eigenschaften wird standardmäßig false sein.Each of these properties will be false by default. Eine metadatenanforderung für eine Eigenschaft, bei der das Wissen des Werts dieser Eigenschaften wichtig ist, sollte versuchen, die zurückgegebenen Metadaten in FrameworkPropertyMetadataumzuwandeln und dann die Werte der einzelnen Eigenschaften nach Bedarf zu überprüfen.A metadata request for a property where knowing the value of these properties is important should attempt to cast the returned metadata to FrameworkPropertyMetadata, and then check the values of the individual properties as needed.

Angeben von MetadatenSpecifying Metadata

Beim Erstellen einer neuen Metadateninstanz zum Anwenden von Metadaten auf eine neue Registrierung der Abhängigkeits Eigenschaft haben Sie die Wahl, welche Metadatenklasse verwendet werden soll: die Basis PropertyMetadata oder eine abgeleitete Klasse, z. b. FrameworkPropertyMetadata.When you create a new metadata instance for purposes of applying metadata to a new dependency property registration, you have the choice of which metadata class to use: the base PropertyMetadata or some derived class such as FrameworkPropertyMetadata. Im Allgemeinen sollten Sie FrameworkPropertyMetadataverwenden, insbesondere dann, wenn Ihre Eigenschaft eine Interaktion mit Eigenschaften System-und WPFWPF Funktionen wie Layout und Datenbindung hat.In general, you should use FrameworkPropertyMetadata, particularly if your property has any interaction with property system and WPFWPF functions such as layout and data binding. Eine weitere Option für anspruchsvollere Szenarien ist die Ableitung von FrameworkPropertyMetadata, um eine eigene metadatenberichterstattungs Klasse mit zusätzlichen Informationen zu erstellen, die in ihren Membern übernommen werden.Another option for more sophisticated scenarios is to derive from FrameworkPropertyMetadata to create your own metadata reporting class with extra information carried in its members. Sie können auch PropertyMetadata oder UIPropertyMetadata verwenden, um den Grad der Unterstützung für Features Ihrer Implementierung zu übermitteln.Or you might use PropertyMetadata or UIPropertyMetadata to communicate the degree of support for features of your implementation.

Für vorhandene Eigenschaften (AddOwner oder OverrideMetadata-Aufrufvorgang) sollten Sie immer mit dem von der ursprünglichen Registrierung verwendeten Metadatentyp überschreiben.For existing properties (AddOwner or OverrideMetadata call), you should always override with the metadata type used by the original registration.

Wenn Sie eine FrameworkPropertyMetadata-Instanz erstellen, gibt es zwei Möglichkeiten, diese Metadaten mit Werten für die spezifischen Eigenschaften aufzufüllen, die die Eigenschaften der frameworkeigenschaft übermitteln:If you are creating a FrameworkPropertyMetadata instance, there are two ways to populate that metadata with values for the specific properties that communicate the framework property characteristics:

  1. Verwenden Sie die FrameworkPropertyMetadata-Konstruktorsignatur, die einen flags-Parameter zulässt.Use the FrameworkPropertyMetadata constructor signature that allows a flags parameter. Dieser Parameter sollte mit allen gewünschten kombinierten Werten der FrameworkPropertyMetadataOptions Enumerationsflags ausgefüllt werden.This parameter should be filled with all desired combined values of the FrameworkPropertyMetadataOptions enumeration flags.

  2. Verwenden Sie eine der Signaturen ohne einen flags-Parameter, und legen Sie dann jede boolesche Eigenschaft für Berichte auf FrameworkPropertyMetadata auf true für jede gewünschte Merkmals Änderung fest.Use one of the signatures without a flags parameter, and then set each reporting Boolean property on FrameworkPropertyMetadata to true for each desired characteristic change. 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.If you do this, you must set these properties before any elements with this dependency property are constructed; the Boolean properties are read-write in order to allow this behavior of avoiding the flags parameter and still populate the metadata, but the metadata must become effectively sealed before property use. Daher wird der Versuch, Eigenschaften nach der Anforderung von Metadaten festzulegen, ein ungültiger Vorgang sein.Thus, attempting to set the properties after metadata is requested will be an invalid operation.

Zusammenführungsverhalten von Framework-EigenschaftenmetadatenFramework Property Metadata Merge Behavior

Wenn Sie Framework-Eigenschaftenmetadaten überschreiben, werden die verschiedenen Metadaten-Eigenschaften entweder zusammengeführt oder ersetzt.When you override framework property metadata, the different metadata characteristics are either merged or replaced.

Dieses Verhalten wird von Mergeimplementiert und kann für abgeleitete Metadatenklassen überschrieben werden.This behavior is implemented by Merge, and can be overridden on derived metadata classes.

Siehe auchSee also