C# 带复选框的列表框-查看每个项目的代码已选中=true

C# 带复选框的列表框-查看每个项目的代码已选中=true,c#,.net,wpf,loops,C#,.net,Wpf,Loops,我有一个WPF列表框,其中包含一个复选框列表,这些复选框都被命名为另一个窗口中其他控件的名称 当通过抓取lst\u控件中的每个项来循环列表框时。项: _details.controlIDs.Clear(); foreach(Control item in lst_controls.Items) { if (item.IsChecked) //Add item to list _details.controlIDs.Add(item.controlID); } 选中/

我有一个WPF
列表框
,其中包含一个
复选框列表
,这些复选框都被命名为另一个窗口中其他控件的名称

当通过抓取
lst\u控件中的每个项来循环
列表框
时。项

_details.controlIDs.Clear();

foreach(Control item in lst_controls.Items)
{
    if (item.IsChecked)

    //Add item to list
    _details.controlIDs.Add(item.controlID);
}
选中/取消选中
列表框
中的任何
复选框
,就会触发代码。它会将每个
项都视为true,即使未选中

例如:选中列表中的顶部框,它会将其视为
IsChecked=true
,但它也会对列表中的每个其他控件执行此操作


奇怪的行为-以前有人见过这种情况吗?

即使您不打算采用完整的MVVM路线,最好通过分离应用程序中的UI和数据层来解决此问题

创建一个包含IsSelected布尔属性的数据项类,并将列表框的
ItemsSource
设置为这些项的集合(例如
ObservableCollection
)。对于双向数据绑定,数据项类应实现
INotifyPropertyChanged

在UI中,为ListBox的
ItemTemplate
属性创建一个
DataTemplate
,其中包括一个绑定到IsSelected的复选框


通过这种方式,您可以扫描数据项集合(使用Linq或其他方式)以查找选定的数据项。

您可以提供更多实际解决方案吗?XAML和更多隐藏的代码。是按钮点击等吗?谢谢大家的建议。原来这是一个有约束力的问题。该应用程序主要是“事件驱动”的,依赖于点击事件、选定项目的更改等。ListBox绑定上的大小写不正确。