Metadatos de las propiedades de marco de trabajoFramework Property Metadata

Las opciones de metadatos de propiedad de marco de trabajo se notifican para las propiedades de los elementos de objeto que se consideran presentes en el nivel de marco de trabajo de WPF en la arquitectura de Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF).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. En general, la designación de nivel de marco de WPF implica que las características como la representación, el enlace de datos y las mejoras del sistema de propiedades se controlan mediante las API de presentación de WPFWPF y los ejecutables.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. Estos sistemas consultan los metadatos de las propiedades de marco de trabajo para determinar las particularidades específicas de las características de las propiedades de un elemento en particular.Framework property metadata is queried by these systems to determine feature-specific characteristics of particular element properties.

Requisitos previosPrerequisites

En este tema, se supone que entiende las propiedades de dependencia desde la perspectiva de un consumidor de propiedades de dependencia existentes en las clases Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) y que ha leído Información general sobre las propiedades de dependencia.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. También debería haber leído Metadatos de las propiedades de dependencia.You should also have read Dependency Property Metadata.

Información que comunican los metadatos de las propiedades de marco de trabajoWhat Is Communicated by Framework Property Metadata

Los metadatos de las propiedades de marco de trabajo se pueden dividir en las siguientes categorías:Framework property metadata can be divided into the following categories:

  • Propiedades de diseño de informes que afectan a un elemento (AffectsArrange, AffectsMeasure, AffectsRender).Reporting layout properties that affect an element (AffectsArrange, AffectsMeasure, AffectsRender). Puede establecer estas marcas en los metadatos si la propiedad afecta a esos aspectos respectivos, y también está implementando el MeasureOverride / ArrangeOverride métodos de la clase para proporcionar un comportamiento de representación específico e información al sistema de diseño.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. Normalmente, una implementación tal comprobaría las invalidaciones de propiedad en las propiedades de dependencia donde cualquiera de estas propiedades de diseño fuese verdadera en los metadatos de las propiedades, y solo esas invalidaciones tendrían que solicitar un nuevo paso de diseño.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.

  • Propiedades de diseño de informes que afectan al elemento primario de un elemento (AffectsParentArrange, AffectsParentMeasure).Reporting layout properties that affect the parent element of an element (AffectsParentArrange, AffectsParentMeasure). Algunos ejemplos en los que se establecen estas marcas de forma predeterminada son FixedPage.Left y Paragraph.KeepWithNext.Some examples where these flags are set by default are FixedPage.Left and Paragraph.KeepWithNext.

  • InheritsOperadorInherits. De manera predeterminada, las propiedades de dependencia no heredan los valores.By default, dependency properties do not inherit values. OverridesInheritanceBehavior permite que la ruta de herencia también viaje a un árbol visual, que es necesario para algunos escenarios de composición de controles.OverridesInheritanceBehavior allows the pathway of inheritance to also travel into a visual tree, which is necessary for some control compositing scenarios.

    Nota

    El término "hereda" en el contexto de los valores de propiedades significa algo específico para las propiedades de dependencia; significa que los elementos secundarios pueden heredar el valor real de la propiedad de dependencia de los elementos primarios debido a una capacidad de nivel de marco de trabajo de WPF del sistema de propiedades de WPFWPF.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. No tiene nada que ver directamente con la herencia de tipos y miembros de código administrado a través de tipos derivados.It has nothing to do directly with managed code type and members inheritance through derived types. Para obtener información detallada, consulte Herencia de valores de propiedad.For details, see Property Value Inheritance.

  • Características de enlace de datos de informes (IsNotDataBindable, BindsTwoWayByDefault).Reporting data binding characteristics (IsNotDataBindable, BindsTwoWayByDefault). De manera predeterminada, las propiedades de dependencia en el marco de trabajo admiten el enlace de datos, con un comportamiento de enlace unidireccional.By default, dependency properties in the framework support data binding, with a one-way binding behavior. Puede deshabilitar el enlace de datos si no hay ningún escenario para ello (porque están diseñados para ser flexibles y extensibles, no hay muchos ejemplos de estas propiedades en las API de WPFWPF predeterminadas).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). Puede establecer el enlace para que tenga un valor predeterminado bidireccionales para las propiedades que unen los comportamientos de un control entre sus partes del componente (IsSubmenuOpen es un ejemplo) o donde el enlace bidireccional es el escenario habitual y esperado para los usuarios (Text es un ejemplo).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). Cambiar los metadatos relacionados con el enlace de datos afecta únicamente al valor predeterminado; en una base por enlace siempre se puede cambiar el valor predeterminado.Changing the data binding–related metadata only influences the default; on a per-binding basis that default can always be changed. Para obtener más información sobre los modos de enlace y el enlace en general, consulte Información general sobre el enlace de datos.For details on the binding modes and binding in general, see Data Binding Overview.

  • Notificar si las aplicaciones o los servicios que admiten el registro en diario (Journal) deben registrar las propiedades.Reporting whether properties should be journaled by applications or services that support journaling (Journal). Para los elementos generales, la inclusión en el diario no está habilitada de manera predeterminada, pero se habilita de forma selectiva para determinados controles de entrada de usuario.For general elements, journaling is not enabled by default, but it is selectively enabled for certain user input controls. Esta propiedad está pensada para que la lean los servicios de registro en diario, incluida la implementación de registro en diario de WPFWPF y, normalmente, se establece en los controles de usuario, como las selecciones del usuario en las listas que deben conservarse en los pasos de navegación.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. Para obtener información sobre el diario, consulte Información general sobre navegación.For information about the journal, see Navigation Overview.

Leer FrameworkPropertyMetadataReading FrameworkPropertyMetadata

Cada una de las propiedades vinculadas anteriormente son las propiedades específicas que el FrameworkPropertyMetadata agrega a su clase base inmediata UIPropertyMetadata.Each of the properties linked above are the specific properties that the FrameworkPropertyMetadata adds to its immediate base class UIPropertyMetadata. Cada una de estas propiedades será false de manera predeterminada.Each of these properties will be false by default. Una solicitud de metadatos para una propiedad en la que conocer el valor de estas propiedades es importante debe intentar convertir los metadatos devueltos en FrameworkPropertyMetadatay, a continuación, comprobar los valores de las propiedades individuales según sea necesario.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.

Especificar los metadatosSpecifying Metadata

Al crear una nueva instancia de metadatos para aplicar los metadatos a un nuevo registro de propiedades de dependencia, tiene la opción de elegir qué clase de metadatos se va a usar: el PropertyMetadata base o alguna clase derivada como 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. En general, debe usar FrameworkPropertyMetadata, especialmente si la propiedad tiene alguna interacción con el sistema de propiedades y WPFWPF funciones como el diseño y el enlace de datos.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. Otra opción para escenarios más sofisticados es derivar de FrameworkPropertyMetadata para crear su propia clase de informes de metadatos con información adicional que se lleva a cabo en sus miembros.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. O bien, puede usar PropertyMetadata o UIPropertyMetadata para comunicar el grado de compatibilidad con las características de la implementación.Or you might use PropertyMetadata or UIPropertyMetadata to communicate the degree of support for features of your implementation.

En el caso de las propiedades existentes (AddOwner o OverrideMetadata llamada), siempre debe invalidar con el tipo de metadatos utilizado por el registro original.For existing properties (AddOwner or OverrideMetadata call), you should always override with the metadata type used by the original registration.

Si va a crear una instancia de FrameworkPropertyMetadata, hay dos maneras de rellenar los metadatos con valores para las propiedades específicas que comunican las características de la propiedad de marco de trabajo: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. Use la firma del constructor FrameworkPropertyMetadata que permite un parámetro flags.Use the FrameworkPropertyMetadata constructor signature that allows a flags parameter. Este parámetro se debe rellenar con todos los valores combinados deseados de las marcas de enumeración FrameworkPropertyMetadataOptions.This parameter should be filled with all desired combined values of the FrameworkPropertyMetadataOptions enumeration flags.

  2. Use una de las firmas sin un parámetro de flags y, a continuación, establezca cada propiedad booleana de informe en FrameworkPropertyMetadata en true para cada cambio de característica deseado.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. Si lo hace, debe establecer estas propiedades antes de que se construya cualquier elemento con esta propiedad de dependencia; las propiedades booleanas son de lectura y escritura para permitir este comportamiento de evitar el parámetro flags y, aun así, rellenar los metadatos, pero los metadatos deben sellarse herméticamente antes del uso de la propiedad.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. Por lo tanto, intentar establecer las propiedades después de haber solicitado los metadatos será una operación no válida.Thus, attempting to set the properties after metadata is requested will be an invalid operation.

Comportamiento de combinación de los metadatos de las propiedades de marco de trabajoFramework Property Metadata Merge Behavior

Cuando se invalidan los metadatos de las propiedades de marco de trabajo, las distintas características de los metadatos se combinan o reemplazan.When you override framework property metadata, the different metadata characteristics are either merged or replaced.

Este comportamiento se implementa mediante Mergey se puede invalidar en clases de metadatos derivadas.This behavior is implemented by Merge, and can be overridden on derived metadata classes.

Vea tambiénSee also