WPF - 是否可以否定数据绑定表达式的结果?

25 浏览
0 Comments

WPF - 是否可以否定数据绑定表达式的结果?

我知道这个很好用:


...但我真正想做的是像下面的绑定表达式一样否定结果(psuedocode)。这可能吗?


admin 更改状态以发布 2023年5月22日
0
0 Comments

如果你想要除了bool以外的结果类型,我最近开始使用ConverterParameter来给自己提供将转换器的结果值取反的选项。这里有一个例子:

[ValueConversion(typeof(bool), typeof(System.Windows.Visibility))]
public class BooleanVisibilityConverter : IValueConverter
{
    System.Windows.Visibility _visibilityWhenFalse = System.Windows.Visibility.Collapsed;
    /// 
    /// Gets or sets the  value to use when the value is false. Defaults to collapsed.
    /// 
    public System.Windows.Visibility VisibilityWhenFalse
    {
        get { return _visibilityWhenFalse; }
        set { _visibilityWhenFalse = value; }
    }
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        bool negateValue;
        Boolean.TryParse(parameter as string, out negateValue);
        bool val = negateValue ^ (bool)value;  //Negate the value using XOR
        return val ? System.Windows.Visibility.Visible : _visibilityWhenFalse;
    }
    ...

这个转换器将bool转换为System.Windows.Visibility类型。参数允许在转换之前将bool取反,以便在需要反向行为时使用。你可以在像这样的元素中使用它:

Visibility="{Binding Path=MyBooleanProperty, Converter={StaticResource boolVisibilityConverter}, ConverterParameter=true}"

0
0 Comments

您可以使用IValueConverter来完成此操作:

public class NegatingConverter : IValueConverter
{
  public object Convert(object value, ...)
  {
    return !((bool)value);
  }
}

并将其中之一用作Binding的转换器。

0