Wpf C#更改checkBox组合框颜色+禁用

时间:2016-10-28 20:23:25

标签: c# wpf

我有一个列表,其中填充了来自其他列表的.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上没什么特别的。

颜色没有改变,也没有禁用。

2 个答案:

答案 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上的财产。