Kiedy należy używać FrameworkPropertyMetadata lub UIPropertyMetadata zamiast zwykłego PropertyMetadata?

82

Patrząc na próbki dołączone właściwości i zachowań Widziałem mishmash zastosowań FrameworkPropertyMetadata, UIPropertyMetadataa PropertyMetadata. Ponieważ wszystkie tworzą hierarchię dziedziczenia, jak wybrać, którego użyć?

Roger Lipscombe
źródło

Odpowiedzi:

81

Te klasy mają zgłaszać niektóre aspekty zachowania właściwości zależności.

Sprawdź różne klasy pod kątem dostępnych opcji.

Na przykład,

jeśli chcesz po prostu cofnąć właściwość o dp i podać wartość domyślną, użyj PropertyMetadata,

jeśli chcesz określić zachowanie animacji, użyj UIPropertyMetadata,

ale jeśli jakaś właściwość wpływa na elementy poziomu frameworka wpf, np. układ elementu, układ nadrzędny lub wiązanie danych, użyj FrameworkPropertyMetadata.

Szczegóły można sprawdzić na stronie msdn http://msdn.microsoft.com/en-us/library/ms751554.aspx

gp.
źródło
2
Prawdziwe pytanie brzmi: dlaczego fragment propdp używa UIPropertyMetadata, zwłaszcza że w Silverlight nie ma podklas PropertyMetadata? To mnie doprowadza do szału.
Grank
6
Dzieje się tak, ponieważ te same fragmenty są udostępniane między WPF i Silverlight. Możesz wypróbować różne fragmenty dla Silverlight z tego linku: blog.nerdplusart.com/archives/silverlight-code-snippets
gp.
2
MSDN mówi „Ogólnie rzecz biorąc, należy używać FrameworkPropertyMetadata, szczególnie jeśli Twoja właściwość ma jakąkolwiek interakcję z systemem właściwości i funkcjami WPF, takimi jak układ i powiązanie danych”. - (Określanie metadanych) msdn.microsoft.com/en-us/library/ms751554.aspx
Wayne Bloss
Do jakiego rodzaju powiązania danych należy używać FrameworkPropertyMetadata? Po prostu chcę mieć właściwość, która jest powiązana z IsEnabled kontrolki.
Monstieur