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

StackOverflow https://stackoverflow.com/questions/828579

Вопрос

Каждый раз, когда я записываю установщик, чье значение свойства 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, который исправляет это:

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top