C# Wpf C更改复选框ComboBox项目颜色+禁用

C# Wpf C更改复选框ComboBox项目颜色+禁用,c#,wpf,C#,Wpf,我有一个用.填充的列表,与其他列表不同,然后我获取这些项目并创建复选框来填充组合框 应用一些过滤器后,我必须在第二个列表中搜索这些组合框项目,如果它不存在,我必须禁用该项目并设置其背景色 // List to populate the combobox public List<System.Windows.Controls.CheckBox> ListaCmbMnMe { get; set; } //... ListaCmbMnMe = new List<System.Wi

我有一个用.填充的列表,与其他列表不同,然后我获取这些项目并创建复选框来填充组合框

应用一些过滤器后,我必须在第二个列表中搜索这些组合框项目,如果它不存在,我必须禁用该项目并设置其背景色

// 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上没有做什么特别的事情

颜色不会改变,禁用也不会起作用。

而不是添加到CMBMME.ItemsSource=ListaCmbMnMe;用于数据源;i、 e.数据背景;将其添加到项目中。不需要有另一个复选框列表集合

// 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属性。

是否如问题中所示,在循环后分配给ItemsSource?此外,如果在循环中放置断点,它是否会命中调试器中的断点?显示xaml。我猜您没有在可视化树中添加复选框。您已将集合添加到ItemsSource,该集合应为数据源集合而不是UI元素集合。感谢您的回复。我投票认为您的评论有用,但它让我记住我没有在xaml上绑定IsEnabled属性。我投票认为您的评论有用,但它让我记住我没有在xaml上绑定IsEnabled属性。