FrameworkPropertyMetadata.AffectsRender Propiedad

Definición

Obtiene o establece un valor que indica si una propiedad de dependencia afecta potencialmente al diseño general de alguna manera que no influye en concreto en la organización o medición, pero requeriría volver a dibujar.

public:
 property bool AffectsRender { bool get(); void set(bool value); };
public bool AffectsRender { get; set; }
member this.AffectsRender : bool with get, set
Public Property AffectsRender As Boolean

Valor de propiedad

true si la propiedad de dependencia en la que existen estos metadatos afecta a la representación; de lo contrario, false. De manera predeterminada, es false.

Excepciones

Los metadatos ya se aplicaron a una operación de propiedad de dependencia, por lo que están sellados y no se pueden establecer sus propiedades.

Ejemplos

En el ejemplo siguiente se obtienen los metadatos predeterminados de varios campos de propiedad de dependencia, se consulta el valor de varias FrameworkPropertyMetadata propiedades en él y se usa la información para rellenar una tabla para implementar un "explorador de metadatos".

pm = dp.GetMetadata(dp.OwnerType);
pm = dp.GetMetadata(dp.OwnerType)
FrameworkPropertyMetadata fpm = pm as FrameworkPropertyMetadata;
if (fpm!=null) {
    AffectsArrange.Text = (fpm.AffectsArrange) ? "Yes" : "No";
    AffectsMeasure.Text = (fpm.AffectsMeasure) ? "Yes" : "No";
    AffectsRender.Text = (fpm.AffectsRender) ? "Yes" : "No";
    Inherits.Text = (fpm.Inherits) ? "Yes" : "No";
    IsDataBindingAllowed.Text = (fpm.IsDataBindingAllowed) ? "Yes" : "No";
    BindsTwoWayByDefault.Text = (fpm.BindsTwoWayByDefault) ? "Yes" : "No";
}
Dim fpm As FrameworkPropertyMetadata = TryCast(pm, FrameworkPropertyMetadata)
If fpm IsNot Nothing Then
    AffectsArrange.Text = If((fpm.AffectsArrange), "Yes", "No")
    AffectsMeasure.Text = If((fpm.AffectsMeasure), "Yes", "No")
    AffectsRender.Text = If((fpm.AffectsRender), "Yes", "No")
        [Inherits].Text = If((fpm.Inherits), "Yes", "No")
    IsDataBindingAllowed.Text = If((fpm.IsDataBindingAllowed), "Yes", "No")
    BindsTwoWayByDefault.Text = If((fpm.BindsTwoWayByDefault), "Yes", "No")

Comentarios

FrameworkElement e FrameworkContentElement incluyen una implementación de que supervisa los cambios de OnPropertyChanged valor efectivos en todas las propiedades de dependencia que existen en un elemento. Como parte de esa lógica, las propiedades de dependencia que cambian el valor efectivo y tienen metadatos con AffectsRender establecido en true iniciarán una solicitud diferida para invalidar los objetos visuales de ese elemento. Dado que esta implementación de nivel de marco de WPF ya está en vigor, normalmente no es necesario buscar propiedades de dependencia con AffectsRender a menos que reemplace o modifique sustancialmente el comportamiento de diseño de nivel de marco de WPF.

Las implementaciones personalizadas OnPropertyChanged pueden optar por tener un comportamiento similar para los cambios de propiedad de dependencia, donde AffectsRender es true.

Las propiedades de cualquier clase derivada de PropertyMetadata se definen normalmente en el modelo de objetos como lectura y escritura. Esto es para que se puedan ajustar después de la inicialización de la instancia. Sin embargo, después de consumir los metadatos como parte de una llamada a Register, AddOwnero OverrideMetadata, el sistema de propiedades sellará que la instancia de metadatos y las propiedades que transmiten los detalles de los metadatos ahora se consideran inmutables. Si se intenta establecer esta propiedad después IsSealed de que se encuentra true en esta instancia de metadatos, se producirá una excepción.

Uso de texto XAML

Los miembros de esta clase no se suelen usar en XAML.

Se aplica a

Consulte también