Wpf c#更改复选框comboboxitem颜色+禁用
本文关键字:颜色 禁用 comboboxitem 复选框 Wpf | 更新日期: 2023-09-27 18:15:23
我有一个列表,它以。distinct格式填充,然后我获得这些项并创建复选框来填充组合框。
在应用了一些滤镜之后,我必须在第二个列表中搜索这些组合框项,如果它不存在,我必须禁用该项并设置其背景色。
// List to populate the combobox
public List<System.Windows.Controls.CheckBox> ListaCmbMnMe { get; set; }
//...
ListaCmbMnMe = new List<System.Windows.Controls.CheckBox>();
// ListaPendencia is populated from database MnMe is a column from it
foreach (string item in ListaPendencia.Select(p => p.MnMe).Distinct())
{
checkBox = new System.Windows.Controls.CheckBox();
checkBox.Content = item;
ListaCmbMnMe.Add(checkBox);
}
//...
// Just trying to change the properties to find out if it works
foreach (System.Windows.Controls.CheckBox item in ListaCmbMnMe)
{
item.IsEnabled = false;
item.Background = new SolidColorBrush(Color.FromRgb(102, 153, 255));
}
cmbMnMe.ItemsSource = ListaCmbMnMe;
我没有在xaml上做任何特别的操作。
既不改变颜色也不禁用
而不是添加cmbMnMe.ItemsSource = ListaCmbMnMe;
,这意味着数据源;即datacontext;加入Items
。不需要另一个复选框列表集合。
// ListaPendencia is populated from database MnMe is a column from it
foreach (string item in ListaPendencia.Select(p => p.MnMe).Distinct())
{
checkBox = new System.Windows.Controls.CheckBox();
checkBox.Content = item;
checkBox.IsEnabled = false;
checkBox.Background = new SolidColorBrush(Color.FromRgb(102, 153, 255));
cmbMnMe.Items.Add(checkBox);
}
理想情况下,你应该使用数据绑定使用DataTemplate,有一个复选框和必要的绑定;使用MVVM模式
我只是忘了在xaml上绑定"IsEnabled"属性。