【发布时间】:2012-04-01 04:33:13
【问题描述】:
默认情况下绑定不能将布尔值转换为可见性,而不必每次都提供 BooleanToVisibilityConverter,这似乎很奇怪。有人知道为什么吗?
更新
我现在找到了一种方法:
像这样创建一个 TypeConverter:
public class VisibilityFromBooleanConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
if (sourceType == typeof(Boolean)) return true;
return base.CanConvertFrom(context, sourceType);
}
public override object ConvertFrom(ITypeDescriptorContext context,
System.Globalization.CultureInfo culture, object value)
{
if (value is Boolean) return ((Boolean)value) ? Visibility.Visible :
Visibility.Collapsed;
return base.ConvertFrom(context, culture, value);
}
}
并将其添加到您的应用中:
TypeDescriptor.AddAttributes(typeof(Visibility),
new TypeConverterAttribute(typeof(VisibilityFromBooleanConverter)));
它似乎工作得很好。现在您不必为每个布尔绑定提供 BooleanToVisibilityConverter。
【问题讨论】:
-
+1 很好,在这里学到了一些有用的东西。
标签: wpf user-interface boolean visibility