我有一个列表,其中填充了来自其他列表的.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上没什么特别的。
颜色没有改变,也没有禁用。
答案 0 :(得分:1)
而不是添加到用于数据源的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模式。
答案 1 :(得分:1)
我只是忘了绑定&#34; IsEnabled&#34; xaml上的财产。