C# ListBox.SelectedItems如果文本相同,则获取索引

C# ListBox.SelectedItems如果文本相同,则获取索引,c#,wpf,listbox,C#,Wpf,Listbox,拥有员工列表框一个员工可以出现两次,因为一个员工可以有多个属性 List<Employee> employees = new List<Employee>(); foreach (var item in employeeListBox.SelectedItems) { employees.Add(company.getEmployees()[employeeListBox.Items.Ind

拥有员工列表框一个员工可以出现两次,因为一个员工可以有多个属性

 List<Employee> employees = new List<Employee>();
            foreach (var item in employeeListBox.SelectedItems)
            {
                employees.Add(company.getEmployees()[employeeListBox.Items.IndexOf(item)]);
            }
List employees=newlist();
foreach(员工列表框中的变量项。选择编辑项)
{
添加(company.getEmployees()[employeeListBox.Items.IndexOf(item)]);
}
目前正在使用上述代码,但如果同名员工出现两次,则只会将该员工的第一个实例添加到列表中

如果我尝试添加两个实例,则只添加第一个实例,但添加两次

除了更改列表框中的文本外还有其他方法可以获取员工的索引吗

  public void addEmployee(Employee emp)
        {
            if (employees == null)
                employees = new List<Employee>();
            employees.Add(emp);
        }

        public void removeEmployee(Employee emp)
        {
            employees.Remove(emp); 
        }

        public List<Employee> getEmployees()
        {
            return this.employees; 
        }

 company = Company.Load(Utilities.ComanySerialized);
                if (company.getEmployees() != null)
                    foreach (Employee b in company.getEmployees())
                    {
                        employeeListBox.Items.Add(b.getLastName() + " " + b.getFirstName() + "; " + b.getDateOfBirth());
                    }
public void addEmployee(员工emp)
{
if(employees==null)
雇员=新名单();
添加(emp);
}
公共无效删除员工(员工emp)
{
员工。移除(emp);
}
公开名单
{
将本文件退还给员工;
}
company=company.Load(Utilities.ComanySerialized);
if(company.getEmployees()!=null)
foreach(company.getEmployees()中的员工b)
{
添加(b.getLastName()+“”+b.getFirstName()+“;+b.getDateOfBirth());
}

如果实例相同,那么添加两次又有什么问题?无论如何,请参阅此答案()以了解潜在的解决方法


本质上,WPF中的ListBox似乎无法获取所有选定的索引,因此如果选择两个相同的对象,则只能获取列表中第一个实例的选择索引。然后,解决方案是将员工包装成具有唯一id的包装。我认为不更改文本的最佳方法是创建一个逻辑循环,以便记录和比较重复的索引。。。复杂的东西


正常使用的最佳方法就是将其命名为不同的名称。

请显示getEmployees()的代码。它们不完全相同,列表中的同一员工使用不同的属性两次。但我想我不能完全保持现状。从列表框的角度来看,你是在添加一个字符串。您可以在employee中创建一个新属性,该属性返回要查找的字符串b.getLastName()+“”+b.getFirstName()+“;”+b.getDateOfBirth(),但将整个employee对象传递给列表框。类似于“