【问题标题】:Enabling/disabling control based on values of more than one control in WPF根据 WPF 中多个控件的值启用/禁用控件
【发布时间】:2011-01-05 11:32:47
【问题描述】:

我可以同时使用复选框和单选按钮来控制文本框的启用/禁用吗?

我的用户界面是这样的,复选框控制单个文本框的状态,而单选按钮控制文本框和复选框的启用/禁用状态。

【问题讨论】:

    标签: wpf mvvm


    【解决方案1】:

    您可以使用多重绑定在 UI 中执行此操作。这看起来像这样:

    <TextBlock>
      <TextBlock.IsEnabled>
        <MultiBinding Converter="{StaticResource MultiConverter}">
          <Binding ElementName="MyCheckBox" Path="IsChecked" />
          <Binding ElementName="MyRadioButton" Path="IsChecked" />
        </MultiBinding>
      </TextBlock.IsEnabled>
    </TextBlock>
    
    <CheckBox x:Name="MyCheckBox"/>
    <RadioButton x:Name="MyRadioButton"/>
    

    转换器查看单选框和复选框的选中状态

    public class MultiConverter: IMultiValueConverter
    {
      public object Convert(object[] values, Type targetType, object parameter,
          System.Globalization.CultureInfo culture)
      {
        bool isCheckBoxChecked = (bool)value[0];
        bool isRadioButtonChecked = (bool)value[1];
        return isCheckBoxChecked  && isRadioButtonChecked;
      }
    
      public object[] ConvertBack(object value, Type[] targetTypes, object parameter,
          System.Globalization.CultureInfo culture)
      {
        throw new NotImplementedException();
      }
    }
    

    【讨论】:

    • 谢谢,这行得通。我只需要添加一行来在 Windows.Resources 中声明 StaticResource MultiConverter。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2010-12-06
    • 2011-12-30
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多