我希望这很简单。
在我的viewmodel中,我有一个可以为空的数组,或者最多可以包含8个条目。我在屏幕上有8个按钮,并希望将按钮的可见性绑定到相应阵列中的条目的存在。因此,对于按钮2,如果myArray有多个条目,我将显示它。我希望我能做一些事情: -
{{Binding {myArray.Length > 1}, Converter={StaticResource BooleanToVisibilityConverter}}
我的想法(明显有缺陷!)是myArray.Length > 1
将评估为真/假,而值转换器会将其转换为可见性。
但它不起作用:(
这可能吗?
谢谢!
答案 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。