Есть ли веская причина, по которой Setter.Value не является ContentProperty?
-
06-07-2019 - |
Вопрос
Каждый раз, когда я записываю установщик, чье значение свойства Value
не может быть встроено, я проклинаю тот факт, что API не помечает класс Setter
как < code> [ContentProperty (" Value ")] , что позволило бы это:
<Setter Property="BitmapEffect">
<Setter.Value>
<OuterGlowBitmapEffect GlowColor="#AAC" Opacity="0.2" GlowSize="1.25" />
</Setter.Value>
</Setter>
... быть упрощенным до этого:
<Setter Property="BitmapEffect">
<OuterGlowBitmapEffect GlowColor="#AAC" Opacity="0.2" GlowSize="1.25" />
</Setter>
Итак, мой вопрос двоякий. Во-первых, есть ли веская причина, по которой API не был настроен таким образом? Во-вторых, что-то мешает мне сделать эти метаданные доступными для XamlReader
, хотя я не контролирую API WPF?
Решение
Действительно, хорошая идея ... Но вы можете легко создать свой собственный класс Setter, унаследованный от System.Windows.Setter, поместить в него атрибут ContentProperty и использовать его вместо стандартного Setter.
Другие советы
Через десять лет и восемнадцать дней после того, как задать этот вопрос, у нового WPF с открытым исходным кодом есть PR, который исправляет это: