值转换器vs附加属性

时间:2016-06-05 18:50:21

标签: c# .net xaml

如果在xaml中使用bool到可见性转换器的长行,我发现这个问题很有意思。什么能做得更好:价值转换器或附加财产?

使用从bool到可见性的值转换器:

Visibility="{Binding IsCommentPreviewVisible,Converter={StaticResource myBoolToVisibilityConverter}}" 

或使用附属物:

ap:BoolVisibility.Visible="{Binding IsCommentPreviewVisible}"

其中VisibleChanged内部处理Visibility的{​​{1}}。

1 个答案:

答案 0 :(得分:1)

当您需要为定义类以外的类设置属性时,自定义附加属性通常很有用。

Canvas.LeftCanvas.TopCanvas.RightCanvas.Bottom为例,这些属性适用于元素,不是专门用于定义要素。您可以使用Canvas.附加属性来定义元素另一个元素(Canvas)中的位置。

值得阅读documentation

另一方面,

转换器为您提供了在UI上非常简单,转换一种数据类型到另一种数据类型的方法。话虽如此,您仍然可以使用附加属性来模仿转换器的行为。

如果你需要做任何文化意识,那么IValueConverter内置了这个,附加属性没有。请参阅documentation

我个人倾向于避开附加属性,除非我需要附加父类需要使用的属性。很难提供一个真实的例子,因为我很少使用它们,如果有的话。