FrameworkPropertyMetadata.AffectsMeasure Eigenschaft
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.