需求:下拉列表ComboBox中,要求部分Item不可用。效果是鼠标一上去后不获得焦点,且无法点击。
前台XAML界面:
样式文件如下:使得可用于不可用的Item文字颜色不同,显示的文字是实体类中的”provinceName”属性。
ViewModel中声明前台控件ItemsSource绑定到的列表
private ObservableCollectionprovinceList; // 所有省份的信息public ObservableCollection ProvinceList{ get { return provinceList; } set { SetProperty(ref provinceList, value); }}
注意,前台ComboBoxItem的”IsEnabled”属性绑定到的是Provinces实体类中的”IsEnabled”属性。
public class Provinces{ public int provinceId { get; set; } // 省会ID public string provinceName { get; set; } // 省会名称 public bool isEnabled { get; set; } // 该省份是否可用}
控制层给ProvinceList列表填充数据即可。
houseTypeViewModel.ProvinceList.Clear();houseTypeViewModel.ProvinceList = DataList; // 这是联网获取的数据!foreach (var item in houseTypeViewModel.ProvinceList){ // 模拟的数据 if (item.provinceName.Equals("广西壮族自治区") || item.provinceName.Equals("广东省")) { item.isEnabled = true; } houseTypeViewModel.ProvinceName.Add(item.provinceName);}
最终效果如下图: