Was sind die Unterschiede zwischen PropertyMetaData, UIPropertyMetadata und FrameworkMetaData in WPF?

8

Ich kenne den grundlegenden Unterschied zwischen diesen Klassen, dass PropertyMetadata beim Sichern der Eigenschaft, UIPropertyMetadata für die Unterstützung von Animationen und FrameworkMetadata für Framework-Eigenschaften für Benutzersteuerelemente verwendet wird.

Aber ich verstehe nur den theoretischen Teil. Es wird eine große Hilfe sein, wenn Sie bitte ein einfaches Beispiel erklären, das all diese 3 Klassen in 3 verschiedenen Abhängigkeitseigenschaften verwendet, die sie deutlich unterscheiden.

Vielen Dank im Voraus.

    
WpfBee 08.01.2013, 18:27
quelle

2 Antworten

8

Quelle: PropertyMetadata vs. FrameworkPropertyMetadata

  

Wenn Sie eine benutzerdefinierte Abhängigkeitseigenschaft implementieren / a> und Sie registrieren die Eigenschaft, indem Sie DependencyProperty.Register aufrufen. Sie geben einige Metadaten für die Eigenschaft an, indem Sie ihr eine Instanz von PropertyMetadata übergeben. Dies kann eine Instanz der Klasse PropertyMetadata oder eine Instanz einer ihrer Unterklassen sein. Die Unterschiede sind unten gezeigt.

     

PropertyMetadata - Grundlegende Metadaten zu Abhängigkeitseigenschaften

     
  • CoerceValueCallback - erzwinge den Wert beim Setzen
  •   
  • DefaultValue - ein Standardwert für die Eigenschaft
  •   
  • PropertyChangedCallback - reagiert auf neuen effektiven Wert für die Eigenschaft
  •   

UIPropertyMetadata - leitet sich von PropertyMetadata ab und fügt Folgendes hinzu:

     
  • IsAnimationProhibited - Animationen für diese Eigenschaft deaktivieren?
  •   

FrameworkPropertyMetadata - leitet sich von UIPropertyMetadata ab und fügt Folgendes hinzu:

     
  • AffectsArrange , AffectsMeasure , AffectsParentArrange , AffectsParentMeasure , AffectsRender - Sollen Layoutberechnungen nach Eigenschaftswertänderungen erneut ausgeführt werden?
  •   
  • BindsTwoWayByDefault , DefaultUpdateSourceTrigger , IsDataBindingAllowed , IsNotDataBindable - Gibt an, wie die Eigenschaft an der Datenbindung teilnimmt
  •   
  • Inherits , OverridesInheritanceBehavior - Funktioniert Vererbung für diese Eigenschaft?
  •   
  • Journal - Speichern Sie diesen Wert beim Journaling?
  •   
  • SubPropertiesDoNotAffectRender - Überprüfen Sie die Eigenschaften dieses Objekts, wenn sich das Layout ändert?
  •   
    
Muthuganesh 18.05.2015 18:13
quelle
4

Ein wichtiger praktischer Unterschied zwischen PropertyMetadata und FrameworkPropertyMetadata besteht darin, dass letzteres erlaubt, eine Menge von FrameworkPropertyMetadataOptions .

Zum Beispiel sorgt das Angeben von FrameworkPropertyMetadataOptions.AffectsRender für das Initiieren eines erneuten Renderings eines UIElement, für das die Eigenschaft geändert wurde. Ohne dieses Flag müssten Sie das manuell in einem PropertyChangedCallback tun.

    
Clemens 08.01.2013 19:33
quelle

Tags und Links