DataTrigger中的值不为空?

190

我知道我可以创建一个setter用于检查值是否为NULL并执行某些操作。例如:

<TextBlock>
  <TextBlock.Style>
    <Style>
      <Style.Triggers>
        <DataTrigger Binding="{Binding SomeField}" Value="{x:Null}">
          <Setter Property="TextBlock.Text" Value="It's NULL Baby!" />
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </TextBlock.Style>
</TextBlock>

我该如何检查“非”值,比如“NOT NULL”或“NOT = 3”?在XAML中是否可能实现?

结果:感谢您的回答... 我知道我可以使用值转换器(这意味着我必须编写代码,而不是像我希望的那样纯粹使用XAML)。然而,这确实回答了问题,即在纯XAML中不能实现。但是,所选的答案可能显示创建这种功能的最佳方法。做得好。

12个回答

2
您可以使用转换器或在您的ViewModel中创建新属性,例如:
public bool CanDoIt
{
    get
    {
        return !string.IsNullOrEmpty(SomeField);
    }
}

然后使用它:

<DataTrigger Binding="{Binding SomeField}" Value="{Binding CanDoIt}">

这种方法看起来非常奇怪。SomeFieldbool 类型吗?如果是,为什么不直接将其与 TrueFalse 进行比较呢?如果不是,那么与布尔值 CanDoIt 的比较将会触发警告或错误。 - AntonK

2

转换器:

public class NullableToVisibilityConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return value == null ? Visibility.Collapsed : Visibility.Visible;
    }
}

绑定:

Visibility="{Binding PropertyToBind, Converter={StaticResource nullableToVisibilityConverter}}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接