【发布时间】:2014-02-07 17:18:01
【问题描述】:
鉴于这个类:
namespace My.App.Converters
{
[ValueConversion(typeof(bool?), typeof(Visibility))]
public class NullableBooleanToVisibilityConverter : IValueConverter
{
...
}
}
为什么我必须执行以下操作:
<UserControl ...
xmlns:converters="clr-namespace:My.App.Converters">
<UserControl.Resources>
<converters:NullableBooleanToVisibilityConverter x:Key="visibilityConverter" />
</UserControl.Resources>
...
<Button MinWidth="120" HorizontalAlignment="Left"
Visibility="{Binding BackButtonVisible, Converter={StaticResource visibilityConverter}}" />
...
</UserControl>
而不是能够执行以下操作:
<UserControl ...
xmlns:converters="clr-namespace:My.App.Converters">
...
<Button MinWidth="120" HorizontalAlignment="Left"
Visibility="{Binding BackButtonVisible, ConverterType={x:Type converters:NullableBooleanToVisibilityConverter}}" />
...
</UserControl>
假设我只想在我的应用程序的一个地方使用这个特定的转换器,即这个特定的UserControl?
答案是否像“微软不想添加ConverterType,如果你真的想要,你可以自己用标记扩展来做”,或者这样做有没有好的编程风格的原因? ? (此示例不考虑“可重用性”。)
【问题讨论】: