FrameworkPropertyMetadata.AffectsRender Eigenschaft

Definition

Ruft einen Wert ab oder legt diesen fest, der angibt, ob sich eine Abhängigkeitseigenschaft möglicherweise in irgendeiner Weise (nicht speziell in Bezug auf Anordnung oder Messung, jedoch hinsichtlich eines erforderlichen Neuzeichnens) auf das allgemeine Layout auswirkt.

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

Eigenschaftswert

true, falls die Abhängigkeitseigenschaft, für die diese Metadaten vorhanden sind, sich auf das Rendering auswirkt, andernfalls false. Der Standardwert ist false.

Ausnahmen

Die Metadaten wurden bereits auf einen Vorgang der Abhängigkeitseigenschaft angewendet, sodass Metadaten versiegelt sind und keine Eigenschaften für Metadaten festgelegt werden können.

Beispiele

Das folgende Beispiel ruft die Standardmetadaten aus verschiedenen Abhängigkeitseigenschaftenfeldern ab, fragt den Wert verschiedener FrameworkPropertyMetadata Eigenschaften ab und verwendet die Informationen, um eine Tabelle aufzufüllen, um einen "Metadatenbrowser" zu implementieren.

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")

Hinweise

FrameworkElement und FrameworkContentElement eine Implementierung von OnPropertyChanged einschließen, die effektive Wertänderungen an allen Abhängigkeitseigenschaften überwacht, die für ein Element vorhanden sind. Als Teil dieser Logik initiieren Abhängigkeitseigenschaften, die den effektiven Wert ändern und metadaten mit AffectsRender festgelegt sind, true eine verzögerte Anforderung, um die Visuals für dieses Element zu ungültig zu machen. Da diese Implementierung auf WPF-Frameworkebene bereits vorhanden ist, müssen Sie in der Regel nicht nach Abhängigkeitseigenschaften AffectsRender mit suchen, es sei denn, Sie ersetzen oder ändern das Layoutverhalten auf WPF-Frameworkebene erheblich.

Benutzerdefinierte OnPropertyChanged Implementierungen können ein ähnliches Verhalten für Abhängigkeitseigenschaftenänderungen aufweisen, wobei AffectsRender ist true.

Eigenschaften für alle abgeleiteten Klassen von PropertyMetadata werden normalerweise im Objektmodell als Lese-/Schreibzugriff definiert. Dies ist so, dass sie nach der Initialisierung der Instanz angepasst werden können. Nachdem die Metadaten jedoch als Teil eines Aufrufs Registervon , AddOwneroder OverrideMetadataverwendet wurden, wird vom Eigenschaftensystem versiegelt, dass die Metadateninstanz und die Eigenschaften, die die Besonderheiten der Metadaten vermitteln, jetzt als unveränderlich gelten. Der Versuch, diese Eigenschaft festzulegen, nachdem IsSealed für diese Metadateninstanz vorhanden ist true , löst eine Ausnahme aus.

XAML-Textverwendung

Member dieser Klasse werden normalerweise nicht in XAML verwendet.

Gilt für:

Weitere Informationen