为了账号安全,请及时绑定邮箱和手机立即绑定

如何反转BooleanToVisibilityConverter?

如何反转BooleanToVisibilityConverter?

素胚勾勒不出你 2019-12-18 16:27:31
我BooleanToVisibilityConverter在WPF中使用Visibility,将控件的属性绑定到Boolean。这可以正常工作,但我希望其中一个控件可以隐藏boolean是否为true,并显示是否为false。
查看完整描述

3 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

通过使用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。


查看完整回答
反对 回复 2019-12-18
  • 3 回答
  • 0 关注
  • 745 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信