[WPF] 实现根据ComboBox选项设定其他控件使能(Enable\Disable)状态

为建立中文知识库加块砖        ——中科大胡不归

0. 前言

在实现类似设置页面,常需要实现某组设置项依赖某个属性。比如父项是 ToggleButton,打开开关,可以设定子项的参数。关闭开关,子项被 Disable 而无法编辑。这种情况,简单的 Binding 就可以实现。

还有种更复杂的情况,父项是 ComboBox,有多个选项,其中一个选项对应使能开关。这种情况我们需要用到 Converter。

学习WPF: 第五个月。

1. View代码


    
        
            
            
            
        
        
        
            
            
            
            
            
            
        
        
        
            
            
        
        
        
            
            
        
    

注意:需要在resource中声明我们要用的Converter。


            

2. Converter代码

using System;
using System.Globalization;
using System.Windows;
using System.Windows.Data;
using HelloMvvmLight.Model;

namespace HelloMvvmLight.Converter
{
    public class LangInfo2BoolConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (targetType == typeof(Boolean)) {
                if (null != value && value is LangInfo item)
                {
                    switch (item.Value)
                    {
                        case "default":
                        {
                            return false;
                        }

                        default:
                        {
                            return true;
                        }
                    }
                }

                return true;
            }
            throw new InvalidOperationException("Converter can only convert to value of type Boolean.");
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }
    }
}

3. 效果演示

参考文章:

  1. Binding to a WPF ToggleButton's IsChecked state
  2. How do you bind the TextWrapping property of a TextBox to the IsChecked value of a MenuItem?

你可能感兴趣的:([WPF] 实现根据ComboBox选项设定其他控件使能(Enable\Disable)状态)