Кажется странным, что по умолчанию привязка не может преобразовать логическое значение в видимость без необходимости всегда указывать 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 для каждой логической привязки.