如果在xaml中使用bool到可见性转换器的长行,我发现这个问题很有意思。什么能做得更好:价值转换器或附加财产?
使用从bool到可见性的值转换器:
Visibility="{Binding IsCommentPreviewVisible,Converter={StaticResource myBoolToVisibilityConverter}}"
或使用附属物:
ap:BoolVisibility.Visible="{Binding IsCommentPreviewVisible}"
其中VisibleChanged
内部处理Visibility
的{{1}}。
答案 0 :(得分:1)
当您需要为定义类以外的类设置属性时,自定义附加属性通常很有用。
以Canvas.Left
,Canvas.Top
,Canvas.Right
,Canvas.Bottom
为例,这些属性适用于父元素,不是专门用于定义要素。您可以使用Canvas.
附加属性来定义元素在另一个元素(Canvas
)中的位置。
值得阅读documentation。
另一方面,转换器为您提供了在UI上非常简单,转换一种数据类型到另一种数据类型的方法。话虽如此,您仍然可以使用附加属性来模仿转换器的行为。
如果你需要做任何文化意识,那么IValueConverter
内置了这个,附加属性没有。请参阅documentation
我个人倾向于避开附加属性,除非我需要附加父类需要使用的属性。很难提供一个真实的例子,因为我很少使用它们,如果有的话。