WPF:在数据绑定中使用表达式来评估true / false

时间:2011-03-23 11:44:58

标签: wpf xaml data-binding expression-blend expression

我希望这很简单。

在我的viewmodel中,我有一个可以为空的数组,或者最多可以包含8个条目。我在屏幕上有8个按钮,并希望将按钮的可见性绑定到相应阵列中的条目的存在。因此,对于按钮2,如果myArray有多个条目,我将显示它。我希望我能做一些事情: -

{{Binding {myArray.Length > 1}, Converter={StaticResource BooleanToVisibilityConverter}}

我的想法(明显有缺陷!)是myArray.Length > 1将评估为真/假,而值转换器会将其转换为可见性。

但它不起作用:(

这可能吗?

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以为此创建自定义转换器。

转换器将绑定到array.Length并接受一个int作为参数来定义数组中需要多少项才能返回true。它将检查绑定是否为null,或者它是否大于参数,并返回相应的Visibility值

答案 1 :(得分:2)

不幸的是,不,这是不可能的。最简单的方法是在视图模型上添加一个属性,例如:

public bool HasItems {
    get {
        return myArray.Length > 1;
    }
}

当myArray发生更改时,您的对象需要实现INotifyPropertyChanged并为“HasItems”引发PropertyChanged事件。然后你将绑定到HasItems,而不是你的数组。

或者,您可以绑定到myArray.Length并构建一个自定义IValueConverter,将0转换为false,将任何正整数转换为true。