我有一个描述GUI部分的WPF xaml文件,我希望特定控件的启用/禁用依赖于其他两个控件 . 代码看起来像这样:
<ComboBox Name="MyComboBox"
IsEnabled="{Binding ElementName=SomeCheckBox, Path=IsChecked}"/>
但我希望它依赖于另一个复选框,所以类似于:
<ComboBox Name="MyComboBox"
IsEnabled="{Binding ElementName=SomeCheckBox&AnotherCheckbox, Path=IsChecked}"/>
最好的方法是什么?我情不自禁地觉得我错过了一些明显的东西或者错误的方式?
4 回答
我相信您可能必须使用MultiBinding与MultiValueConverter . 看这里:http://www.developingfor.net/wpf/multibinding-in-wpf.html
这是一个直接相关的例子:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/5b9cd042-cacb-4aaa-9e17-2d615c44ee22
您可以将MultiBinding与实现IMultiValueConverter的转换器一起使用 .
只需给出答案,您就可以(几乎)复制并粘贴:
需要的静态资源:
ComboBox:
转换器的代码:
您也可以尝试相同的较短版本:
当然,您也可能需要转换器以实现可见性:
作为qqbenq答案的扩展:
添加了处理Collection的
Count
的函数,例如,如果要检查是否选择了ListView
的某个项目 .Converter:
Namespace
<theNamespace:IsEnabledConverter x:Key="IsEnabledConverter"/>
Button