Когда мне следует использовать FrameworkPropertyMetadata или UIPropertyMetadata вместо обычных PropertyMetadata?

82

При просмотре примеров присоединенных свойств и поведения я обнаружил массу вариантов использования FrameworkPropertyMetadata, UIPropertyMetadataи PropertyMetadata. Поскольку все они образуют иерархию наследования, как мне выбрать, какую из них использовать?

Роджер Липскомб
источник

Ответы:

81

Эти классы должны сообщать о некоторых аспектах поведения свойства зависимости.

Проверьте различные классы, чтобы узнать о предоставляемых ими вариантах.

Например,

если вы просто хотите вернуть свойство с помощью dp и указать значение по умолчанию, используйте PropertyMetadata,

если вы хотите указать поведение анимации, используйте UIPropertyMetadata,

но если какое-либо свойство влияет на содержимое уровня фреймворка wpf, например, макет элемента, родительский макет или привязку данных, используйте FrameworkPropertyMetadata.

Подробности вы можете проверить на msdn http://msdn.microsoft.com/en-us/library/ms751554.aspx

gp.
источник
2
На самом деле вопрос в том, почему фрагмент propdp использует UIPropertyMetadata, особенно если учесть, что в Silverlight нет подклассов PropertyMetadata? Это сводит меня с ума.
Grank
6
Это потому, что одни и те же фрагменты используются в WPF и Silverlight. Вы можете попробовать разные сниппеты для silverlight по этой ссылке: blog.nerdplusart.com/archives/silverlight-code-snippets
gp.
2
MSDN сообщает: «В общем, вам следует использовать FrameworkPropertyMetadata, особенно если ваше свойство имеет какое-либо взаимодействие с системой свойств и функциями WPF, такими как макет и привязка данных». - (Указание метаданных) msdn.microsoft.com/en-us/library/ms751554.aspx
Уэйн Блосс
Для какой привязки данных следует использовать FrameworkPropertyMetadata? Мне просто нужно свойство, привязанное к IsEnabled элемента управления.
Monstieur