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

Noy*_* El 1 data-binding wpf

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

<Button IsEnabled={Binding ElementName=CheckBox1,Path=IsChecked} />
Run Code Online (Sandbox Code Playgroud)

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

这该怎么做?

pun*_*r76 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>
Run Code Online (Sandbox Code Playgroud)
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
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助

  • @NoyanEl然后将其标记为解决方案.单击复选标记. (5认同)
  • @BalamBalam 不幸的是,这就是 StackOverflow 的现实。有许多用户没有表达他们的感激之情。这是非常令人沮丧的,因为你在 StackOverflow 上投入了很长时间! (2认同)