C# 列表框未在SelectedItems.Add()上更新

C# 列表框未在SelectedItems.Add()上更新,c#,wpf,listbox,selecteditem,selectedvalue,C#,Wpf,Listbox,Selecteditem,Selectedvalue,我正在尝试将多选列表框绑定到我拥有的ListIdrov。我所做的是将SelectedValue绑定到一个属性,该属性将该值添加或删除到列表中。list和listbox.SelectedItems都应同步 列表框的xaml代码如下所示: <ListBox DisplayMemberPath="Name" SelectedValuePath="Id" SelectedValue="{Bi

我正在尝试将多选列表框绑定到我拥有的ListIdrov。我所做的是将SelectedValue绑定到一个属性,该属性将该值添加或删除到列表中。list和listbox.SelectedItems都应同步

列表框的xaml代码如下所示:

            <ListBox DisplayMemberPath="Name"
                     SelectedValuePath="Id"
                     SelectedValue="{Binding Path=IdProv,
                                    Mode=OneWayToSource,
                                    ValidatesOnExceptions=True}"
                     SelectionMode="Multiple" />
ItemsSource在代码隐藏中设置。它是具有Id和Name属性的产品列表

问题在于SelectedValue属性没有正确更新,SelectedItem也没有正确更新。它们仅在选择第一个项目时设置,然后更新

另外,当我单击列表中的某个项目时,SelectedValue只会在我单击第一次添加的项目时更新

知道发生了什么吗?我肯定我在绑定时犯了一个愚蠢的错误,但这花了我几个小时,我无法理解


谢谢,Martín

我做了一个简单的破解,我不满意,但解决了问题。我编写了这个SelectionChanged处理程序,负责设置SelectedValue不更新的属性:

    private void idProveedorListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        ListBox list = (ListBox)sender;
        if (list.SelectedItems.Count == 0)
        {
            ProdList.Last().IdProv.Clear();
            return;
        }
        else
        {
            Models.Proveedor lastSelected = list.SelectedItems[list.SelectedItems.Count - 1] as Models.Proveedor;
            if (lastSelected != list.SelectedItem)
                PProdList.Last().IdProveedorInt = lastSelected.Id;
        }
    }

我有一个问题。您是否试图从列表框中进行多重选择,并希望绑定该列表框?i、 e.您希望listboxyes上有一个可绑定的多选项。直接将列表绑定到SelectedItems会很好,但我认为这更困难,因为我想绑定到每个项目的Id属性。这些链接可能会有所帮助。如何更新列表框项目C?-将ArrayList绑定到列表框-嗨,谢谢你的回答,但是我在那里找不到任何答案。我知道怎么装订。我的问题是SelectedValue仅在第一次.SelectedItems.Add或第一次单击项目列表时更新。如果你发现我遗漏了什么,请告诉我!这个链接肯定对你有帮助。谢谢