Compartir a través de


Metadatos de las propiedades de marco de trabajo

Las opciones de metadatos de las propiedades de marco de trabajo se comunican para las propiedades de elementos de objeto que se consideran presentes en el nivel de marco de trabajo de WPF en la arquitectura de Windows Presentation Foundation (WPF). En general, la designación de nivel de marco de trabajo de WPF conlleva que determinadas características, tales como la representación, los enlaces de datos y las matizaciones del sistema de propiedades, las administren las APIs y los archivos ejecutables de presentación de WPF. 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 determinados elementos.

Este tema contiene las secciones siguientes.

  • Requisitos previos
  • Información comunicada por los metadatos de las propiedades de marco de trabajo
  • Leer FrameworkPropertyMetadata
  • Especificar los metadatos
  • Comportamiento de combinación de metadatos de propiedades de marco de trabajo
  • Temas relacionados

Requisitos previos

En este tema se da por sentado que entiende las propiedades de dependencia desde la perspectiva de un consumidor de las propiedades de dependencia existentes en las clases de Windows Presentation Foundation (WPF), y que ha leído Información general sobre las propiedades de dependencia. También, debería haber leído Metadatos de las propiedades de dependencia.

Información comunicada por los metadatos de las propiedades de marco de trabajo

Los metadatos de las propiedades de marco de trabajo se pueden dividir en las categorías siguientes:

  • Comunicación de propiedades de diseño que afectan a un elemento (AffectsArrange, AffectsMeasure, AffectsRender). Puede establecer estos marcadores de los metadatos si la propiedad afecta a esos aspectos respectivos, y si también implementa los métodos MeasureOverride / ArrangeOverride de la clase para proporcionar al sistema del diseño comportamiento e información de representación concretos. Normalmente, este tipo de implementación comprobaría las invalidaciones de propiedad en las propiedades de dependencia para aquellos casos en que se cumpliese cualquiera de estas propiedades de diseño en los metadatos de propiedad, y sólo esas invalidaciones tendrían que solicitar un nuevo paso de diseño.

  • Comunicación de propiedades de diseño que afectan al elemento primario de un elemento (AffectsParentArrange, AffectsParentMeasure). Algunos ejemplos en que se establecen estos marcadores de manera predeterminada son FixedPage.Left y Paragraph.KeepWithNext.

  • Inherits. De forma predeterminada, las propiedades de dependencia no heredan los valores. OverridesInheritanceBehavior permite a la ruta de herencia recorrer también el interior de un árbol visual, algo que es necesario para algunos escenarios de composición de controles.

    NotaNota

    El término "heredar" en el contexto de los valores de propiedad tiene un significado concreto para las propiedades de dependencia: significa que los elementos secundarios pueden heredar el valor de la propiedad de dependencia real de los elementos primarios gracias a una función de nivel de marco de trabajo de WPF del sistemas de propiedades de WPF.No tiene nada que ver directamente con la herencia de miembros y tipos de código administrado a través de tipos derivados.Para obtener información detallada, vea Herencia de valores de propiedad.

  • Comunicación de características de enlace de datos (IsNotDataBindable, BindsTwoWayByDefault). De manera predeterminada, las propiedades de dependencia del marco de trabajo admiten el enlace de datos, con un comportamiento de enlace unidireccional. Puede deshabilitar el enlace de datos si no existe ningún escenario para ello en absoluto (dado que se pretende que sean flexibles y extensibles, no hay muchos ejemplos de este tipo de propiedades en las APIs predeterminadas de WPF). Puede establecer el enlace de modo que su valor predeterminado sea bidireccional para las propiedades que conectan entre sí los comportamientos de un control entre los elementos que lo componen (IsSubmenuOpen es un ejemplo de ello) o en aquellos casos en que el enlace bidireccional sea el escenario común esperado por los usuarios (Text es un ejemplo de ello). Cambiar los metadatos relacionados con el enlace de datos afecta únicamente al valor predeterminado; este valor siempre se puede modificar para cada enlace. Para obtener detalles sobre los modos de enlace y el enlace en general, vea Información general sobre el enlace de datos.

  • Comunicación de si las aplicaciones o los servicios compatibles con el diario deben incluir en él las propiedades (Journal). Para los elementos generales, la inclusión en el diario no está habilitada de manera predeterminada, sino que se habilita de manera selectiva para algunos controles de datos proporcionados por el usuario. Esta propiedad sirve para que la lean los servicios de diario, incluida la implementación del diario de WPF, y suele establecerse para controles de usuario tales como selecciones del usuario en listas que deben conservarse en los pasos de navegación subsiguientes. Para obtener más información sobre el diario, vea Información general sobre navegación.

Leer FrameworkPropertyMetadata

Cada una de las propiedades vinculadas anteriormente son propiedades específicas que FrameworkPropertyMetadata agrega a su clase base UIPropertyMetadata inmediata. Cada una de estas propiedades es false de manera predeterminada. Una solicitud de metadatos de una propiedad cuando es importante conocer el valor de estas propiedades debe intentar convertir los metadatos devueltos en FrameworkPropertyMetadata y, a continuación, comprobar los valores de las propiedades individuales según sea necesario.

Especificar los metadatos

Cuando se crea una nueva instancia de metadatos a fin de aplicarlos a un nuevo registro de propiedad de dependencia, puede elegir la clase de metadatos que desea utilizar: la clase base PropertyMetadata o alguna clase derivada, como FrameworkPropertyMetadata. En general, debe utilizar FrameworkPropertyMetadata, en especial si la propiedad tiene alguna interacción con el sistema de propiedades y las funciones de WPF, como las de diseño y el enlace de datos. Otra opción para escenarios más sofisticados consiste en derivar de FrameworkPropertyMetadata a fin de crear su propia clase de comunicación de metadatos cuyos miembros contengan información adicional. O también puede utilizar PropertyMetadata o UIPropertyMetadata para comunicar el grado de compatibilidad con las características de la implementación.

Para las propiedades existentes (llamada a AddOwner o OverrideMetadata), debe invalidar siempre con el tipo de metadatos utilizado por el registro original.

Si crea una instancia de FrameworkPropertyMetadata, hay dos maneras de rellenar esos metadatos con valores correspondientes a las propiedades concretas que comunican las características de las propiedades de marco de trabajo:

  1. Utilice la firma de constructor de FrameworkPropertyMetadata, que permite un parámetro flags. Este parámetro debe rellenarse con todos los valores combinados deseados de los marcadores de enumeración de FrameworkPropertyMetadataOptions.

  2. Utilice una de las firmas sin un parámetro flags y, a continuación, establezca la propiedad Boolean de comunicación de FrameworkPropertyMetadata en true para cada cambio de característica deseado. Si lo hace, debe establecer estas propiedades antes de construir cualquier elemento con esta propiedad de dependencia; las propiedades Boolean son de lectura y escritura a fin de permitir este comportamiento consistente en evitar el parámetro flags y, aún así, rellenar los metadatos, pero los metadatos deben quedar sellados de manera efectiva antes de utilizar la propiedad. Así pues, si intenta establecer las propiedades después de solicitar los metadatos, la operación no será válida.

Comportamiento de combinación de metadatos de propiedades de marco de trabajo

Cuando se invalidan los metadatos de propiedades de marco de trabajo, las distintas características de los metadatos se combinan o reemplazan.

Este comportamiento se implementa mediante Merge y se puede reemplazar en las clases de metadatos derivadas.

Vea también

Referencia

GetMetadata

Conceptos

Metadatos de las propiedades de dependencia

Información general sobre las propiedades de dependencia

Propiedades de dependencia personalizadas