WPF我的列表有问题<;T>;

本文关键字:gt 我的 lt 有问题 WPF 列表 | 更新日期: 2023-09-27 18:20:13

这是我的函数。

public List<DiseaseSymptomParams> GetSelectedDiseaseSymptom()
{
    var entiParams = new DiseaseSymptomParams();
    var selectedDiseases = new List<DiseaseSymptomParams>();
    try
    {
        foreach (DiseaseSymptom itemSelected in DiseaseSymptomsDataGrid.ItemsSource)
        {
            var cellContent = (CheckBox)StatusIdColumn.GetCellContent(itemSelected);
            if (cellContent != null && cellContent.IsChecked == true)
            {
                entiParams.Id = DefaultValue.GetInt(itemSelected.Id);
                selectedDiseases.Add(entiParams);
            }
        }
    }
    catch (Exception)
    {
    }
    return selectedDiseases;
}

显然,如果我选择了2个或多个项目(使用复选框),所有复选框都将添加到selectedDiseases中,但最后添加的复选框将覆盖列表中的所有条目。

WPF我的列表有问题<;T>;

您只有一个entiParams的副本,您可以不断修改并重新添加到列表中。将对象的创建放在循环中,这样您就可以创建新的对象,而不是修改旧的对象。

foreach (DiseaseSymptom itemSelected in DiseaseSymptomsDataGrid.ItemsSource)
{
    var cellContent = (CheckBox)StatusIdColumn.GetCellContent(itemSelected);
    if (cellContent != null && cellContent.IsChecked == true)
    {
        var entiParams = new DiseaseSymptomParams();
        entiParams.Id = DefaultValue.GetInt(itemSelected.Id);
        selectedDiseases.Add(entiParams);
    }
}

entiParams是一个引用类型,列表selectedDiseases不断添加相同的实例。改为:

public List<DiseaseSymptomParams> GetSelectedDiseaseSymptom()
{
    var selectedDiseases = new List<DiseaseSymptomParams>();
    try
    {
        foreach (DiseaseSymptom itemSelected in DiseaseSymptomsDataGrid.ItemsSource)
        {
            var cellContent = (CheckBox)StatusIdColumn.GetCellContent(itemSelected);
            if (cellContent != null && cellContent.IsChecked == true)
            {
                var entiParams = new DiseaseSymptomParams
                {
                    Id = DefaultValue.GetInt(itemSelected.Id)
                };
                selectedDiseases.Add(entiParams);
            }
        }
    }
    catch (Exception)
    {
    }
    return selectedDiseases;
}
相关文章: