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。
- 3 回答
- 0 关注
- 751 浏览
添加回答
举报