Есть ли веская причина, что Setter.Value не является ContentProperty?

Каждый раз, когда я выписываю сеттер, значение свойства Value не описывается в строке, я проклинаю тот факт, что API не маркирует класс Setter [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?

Ответ 1

Хорошая точка действительно... Но вы можете легко создать свой собственный класс Setter, унаследованный от System.Windows.Setter, поместить на него атрибут ContentProperty и использовать его вместо стандартного Setter.

Ответ 2

Через десять лет и восемнадцать дней после того, как задан этот вопрос, у нового WPF с открытым исходным кодом есть PR, который исправляет это:

https://github.com/dotnet/wpf/pull/745