Dot-Net

Setter.Value 不是 ContentProperty 有充分的理由嗎?

  • May 24, 2019

每次我寫出一個Value屬性值不可內聯描述的 setter 時,我都會詛咒 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其次,即使我不控制 WPF API ,是否有任何東西阻止我以某種方式提供這些元數據?

確實是好點…但是您可以輕鬆地創建自己的從 System.Windows.Setter 繼承的 Setter 類,將 ContentProperty 屬性放在它上面,然後使用它來代替標準的 Setter。

在問了這個問題十年零十八天之後,新開源的 WPF 送出了一個 PR 來解決這個問題:

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

引用自:https://stackoverflow.com/questions/828579