选中Windows上的任何复选框时启用按钮

时间:2012-03-05 09:42:24

标签: wpf data-binding

我在Windows上有3个CheckBoxes。我想启用Button当使用绑定检查任何此CheckBox时。我知道这样的提示:

<Button IsEnabled={Binding ElementName=CheckBox1,Path=IsChecked} />

但我希望按钮绑定到其他2个CheckBox。

怎么做?

1 个答案:

答案 0 :(得分:10)

您可以将MultiBinding与MultiValueConverter一起使用

<Button>
  <Button.IsEnabled>
    <MultiBinding Converter={StaticResource MultiCheckedToEnabledConverter}>
      <Binding ElementName="CheckBox1" Path="IsChecked" />
      <Binding ElementName="CheckBox2" Path="IsChecked" />
      <Binding ElementName="CheckBox3" Path="IsChecked" />
    </MultiBinding>
  </Button.IsEnabled>
</Button>
public class MultiCheckedToEnabledConverter : IMultiValueConverter
{
  #region Implementation of IMultiValueConverter

  public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) {
    if (values != null) {
      return values.OfType<bool>().Any(b => b);
    }
    return false;
  }

  public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) {
    return new object[] {};
  }

  #endregion
}

希望这会有所帮助