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

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


person Roger Lipscombe    schedule 21.03.2010    source источник


Ответы (1)


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

Проверьте различные классы на наличие опций, которые они предоставляют.

Например,

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

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

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

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

person gp.    schedule 21.03.2010
comment
Настоящий вопрос заключается в том, почему фрагмент кода propdp использует UIPropertyMetadata, тем более что в Silverlight нет подклассов PropertyMetadata? Это сводит меня с ума. - person Grank; 30.06.2010
comment
Это связано с тем, что одни и те же фрагменты используются в WPF и Silverlight. Вы можете попробовать различные фрагменты для Silverlight по этой ссылке: blog.nerdplusart.com/archives/silverlight -фрагменты кода - person gp.; 08.07.2010
comment
MSDN говорит, что в целом вам следует использовать FrameworkPropertyMetadata, особенно если ваше свойство имеет какое-либо взаимодействие с системой свойств и функциями WPF, такими как макет и привязка данных. - (Указание метаданных) msdn.microsoft.com/en-us/library/ms751554 .aspx - person Wayne Bloss; 28.10.2011
comment
Для какой привязки данных следует использовать FrameworkPropertyMetadata? Мне просто нужно свойство, привязанное к IsEnabled элемента управления. - person Monstieur; 04.06.2013