Metadatos de las propiedades de marco de trabajo

Las opciones de metadatos de propiedad de marco se notifican para las propiedades de los elementos de objeto que se consideran en el nivel de marco de WPF en la arquitectura de Windows Presentation Foundation (WPF). 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 los refinamientos del sistema de propiedades se controlan mediante las API de presentación y los ejecutables 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 un elemento en particular.

Requisitos previos

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 de Windows Presentation Foundation (WPF), y que ha leído el tema Información general sobre las propiedades de dependencia. También debería haber leído Metadatos de las propiedades de dependencia.

Información que comunican los metadatos de las propiedades de marco de trabajo

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

  • Propiedades de diseño de informes que afectan a un elemento (AffectsArrange, AffectsMeasure, AffectsRender). Puede establecer estas marcas en los metadatos si la propiedad afecta a esos aspectos respectivos, y si también implementa los métodos MeasureOverride / ArrangeOverride en la clase para proporcionar al sistema de diseño la información y el comportamiento de representación específicos. 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.

  • Propiedades de diseño de informes que afectan al elemento primario de un elemento (AffectsParentArrange, AffectsParentMeasure). Algunos ejemplos en los que estas marcas se establecen de forma predeterminada son FixedPage.Left y Paragraph.KeepWithNext.

  • Inherits. De manera predeterminada, las propiedades de dependencia no heredan los valores. OverridesInheritanceBehavior permite que la ruta de herencia también viaje a un árbol visual, lo cual es necesario para algunos escenarios de composición de control.

    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 WPF. No tiene nada que ver directamente con la herencia de tipos y miembros de código administrado a través de tipos derivados. Para obtener información detallada, consulte Herencia de valores de propiedad.

  • Características de enlace de datos de informes (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. Puede deshabilitar el enlace de datos si no hubiera ningún escenario para ello en absoluto (dado que se han diseñado para ser flexibles y extensibles, no hay muchos ejemplos de estas propiedades en las API 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) o donde el enlace bidireccional es el escenario común y esperado para los usuarios (Text es un ejemplo). 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. 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.

  • Comunicación de si las aplicaciones o los servicios compatibles con el diario Journal deben incluir en él las propiedades. 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. Esta propiedad está pensada para que la lean los servicios de registro en diario, incluida la implementación de registro en diario de WPF 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. Para obtener información sobre el diario, consulte Información general sobre navegación.

Leer FrameworkPropertyMetadata

Cada una de las propiedades vinculadas arriba son las propiedades específicas que FrameworkPropertyMetadata agrega a su clase base UIPropertyMetadata inmediata. Cada una de estas propiedades será false de manera predeterminada. Una solicitud de metadatos para una propiedad en la que sea 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 para fines de aplicar metadatos a un nuevo registro de la propiedad de dependencia, tiene la opción de elegir la clase de metadatos que se utilizará: la clase base PropertyMetadata o una clase derivada, como FrameworkPropertyMetadata. En general, debe utilizar FrameworkPropertyMetadata, en especial si la propiedad tiene cualquier interacción con el sistema de propiedades y con las funciones de WPF, como el diseño y el enlace de datos. Otra opción para escenarios más sofisticados consiste en derivar de FrameworkPropertyMetadata para crear su propia clase de comunicación de metadatos, cuyos miembros contengan información adicional. O puede usar PropertyMetadata o UIPropertyMetadata para comunicar el grado de soporte para las características de su implementación.

Para las propiedades existentes (llamada AddOwner o OverrideMetadata), siempre deben reemplazarse 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 para las propiedades concretas que comunican las características de las propiedades de marco de trabajo:

  1. Use la signatura de constructor FrameworkPropertyMetadata que permite un parámetro flags. Este parámetro debe rellenarse con los valores combinados deseados de las marcas de enumeración FrameworkPropertyMetadataOptions.

  2. Utilice una de las firmas sin un parámetro flags y, a continuación, establezca cada propiedad booleana de comunicación de FrameworkPropertyMetadata en true para cada cambio de característica que desee. 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. Por lo tanto, intentar establecer las propiedades después de haber solicitado los metadatos será una operación no válida.

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

Cuando se invalidan los metadatos de las 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 invalidar en clases de metadatos derivadas.

Vea también