Wpf 将listbox SelectedItem绑定到可观察的集合?

Wpf 将listbox SelectedItem绑定到可观察的集合?,wpf,listbox,selecteditem,Wpf,Listbox,Selecteditem,我在WPF中有一个SelectionMode设置为Multiple的列表框,并且可以多选择列表框中的项目。但是,SelectedItem不会更新它绑定到的可观察集合 有没有办法将列表框中的多个选定项绑定到一个可观察的集合?我不知道mvvm的方法, 我有一个结合了mvvm和codebehind的工作解决方案 代码隐藏 private void lstbox_SelectionChanged_1(object sender, SelectionChangedEventArgs e) {

我在WPF中有一个SelectionMode设置为Multiple的列表框,并且可以多选择列表框中的项目。但是,SelectedItem不会更新它绑定到的可观察集合


有没有办法将列表框中的多个选定项绑定到一个可观察的集合?

我不知道mvvm的方法, 我有一个结合了mvvm和codebehind的工作解决方案

代码隐藏

private void lstbox_SelectionChanged_1(object sender, SelectionChangedEventArgs e)
    {
        var listBox = sender as ListBox;
        if (listBox == null) return;

        var viewModel = listBox.DataContext as Window1ViewModel;
        if (viewModel == null) return;

        viewModel.ListOfSelectedItems.Clear();

        foreach (Window1ViewModel.States item in listBox.SelectedItems)
        {
            viewModel.ListOfSelectedItems.Add(item);
        }
      }
视图模型

    private ObservableCollection<States> _listofselecteditems;
    public ObservableCollection<States> ListOfSelectedItems
    {
        get
        {
            return _listofselecteditems;
        }
        set
        {
            _listofselecteditems = value;
            RaisePropertyChanged(() => ListOfSelectedItems);
        }
    }
private observeCollection\u selectedItems列表;
所选项目的公共可观察收集列表
{
得到
{
返回所选项目的列表;
}
设置
{
_listofselecteditems=值;
RaisePropertyChanged(()=>ListOfSelectedItems);
}
}
Xaml


可能存在的副本
            <ListBox x:Name="lstbox" 
             SelectionChanged="lstbox_SelectionChanged_1"
             ItemsSource="{Binding StatesList,Mode=TwoWay}"
             SelectionMode="Multiple" >
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <CheckBox 
                        IsChecked="{Binding Path=IsSelected,Mode=TwoWay}"
                        Content="{Binding StateName}" />
                    <TextBox Margin="8,0,0,0" Text="{Binding SOmeProperty}" IsEnabled="{Binding Path=IsSelected}"/>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>