Коли слід використовувати FrameworkPropertyMetadata або UIPropertyMetadata над простими PropertyMetadata?


82

При погляді на зразок додаються властивості і поведінку, я бачив мішанину використання FrameworkPropertyMetadata, UIPropertyMetadataі PropertyMetadata. Оскільки всі вони утворюють ієрархію успадкування, як вибрати, яку використовувати?

Відповіді:


81

Ці класи повинні повідомляти про деякі аспекти поведінки властивості залежності.

Перевірте різні класи для варіантів, які вони пропонують.

Наприклад,

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

якщо ви хочете вказати поведінку анімації, використовуйте UIPropertyMetadata,

але якщо якесь властивість впливає на компоненти рівня фреймворку wpf, наприклад макет елемента, батьківський макет або прив'язка даних, використовуйте FrameworkPropertyMetadata.

Деталі ви можете перевірити на msdn http://msdn.microsoft.com/en-us/library/ms751554.aspx


2
Справжнє питання полягає в тому, чому фрагмент propdp використовує UIPropertyMetadata, тим більше, що в Silverlight немає підкласів PropertyMetadata? Це зводить мене з розуму.
Grank

6
Це тому, що однакові фрагменти спільно використовуються між WPF та Silverlight. Ви можете спробувати різні фрагменти для silverlight за
gp.

2
MSDN каже: "Загалом, ви повинні використовувати FrameworkPropertyMetadata, особливо якщо ваше властивість має будь-яку взаємодію з системою властивостей та функціями WPF, такими як макет та прив'язка даних". - (із зазначенням метаданих) msdn.microsoft.com/en-us/library/ms751554.aspx
Wayne Bloss

Для якого типу прив’язки даних слід використовувати FrameworkPropertyMetadata? Я просто хочу властивість, яка прив'язана до IsEnabled елемента управління.
Monstieur,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.