FrameworkPropertyMetadata.AffectsMeasure Eigenschaft

Definition

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob eine Abhängigkeitseigenschaft möglicherweise die Messphase während Layout-Engine-Vorgängen beeinflusst.

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

Eigenschaftswert

true, wenn die Abhängigkeitseigenschaft, für die diese Metadaten vorhanden sind, möglicherweise die Messphase beeinflusst, 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 schließen eine Implementierung von ein OnPropertyChanged , 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 AffectsMeasure 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 mit AffectsMeasure suchen, es sei denn, Sie ersetzen oder ändern das Layoutverhalten auf WPF-Frameworkebene wesentlich.

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

Eigenschaften für abgeleitete Klassen von PropertyMetadata werden im Objektmodell in der Regel als Lese-/Schreibzugriff definiert. Dadurch können sie nach der Initialisierung der Instanz angepasst werden. Nachdem die Metadaten jedoch im Rahmen eines Aufrufs Registervon , AddOwneroder OverrideMetadataverwendet wurden, versiegelt das Eigenschaftensystem, dass metadateninstanz und -eigenschaften, die die Besonderheiten der Metadaten vermitteln, jetzt als unveränderlich angesehen werden. Der Versuch, diese Eigenschaft festzulegen, nachdem IsSealed sich true auf dieser Metadateninstanz befindet, löst eine Ausnahme aus.

XAML-Textverwendung

Member dieser Klasse werden in der Regel nicht in XAML verwendet.

Gilt für:

Weitere Informationen