哆啦的时光机
通过使用IValueConverter将布尔值转换为true和false的可配置目标值的通用实现,您可以实现相同的目标,而不是取反。以下是一种这样的实现:public class BooleanConverter<T> : IValueConverter{ public BooleanConverter(T trueValue, T falseValue) { True = trueValue; False = falseValue; } public T True { get; set; } public T False { get; set; } public virtual object Convert(object value, Type targetType, object parameter, CultureInfo culture) { return value is bool && ((bool) value) ? True : False; } public virtual object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { return value is T && EqualityComparer<T>.Default.Equals((T) value, True); }}接下来,在以下位置T将其子类化Visibility:public sealed class BooleanToVisibilityConverter : BooleanConverter<Visibility>{ public BooleanToVisibilityConverter() : base(Visibility.Visible, Visibility.Collapsed) {}}最后,这是您可以BooleanToVisibilityConverter在XAML中使用上述方法并将其配置为例如Collapsed用于true和Visiblefalse的方式:<Application.Resources> <app:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" True="Collapsed" False="Visible" /></Application.Resources>当您要绑定到名为IsHidden相反的布尔属性时,此反转非常有用IsVisible。