Wpf 将listbox SelectedItem绑定到可观察的集合?
我在WPF中有一个SelectionMode设置为Multiple的列表框,并且可以多选择列表框中的项目。但是,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) {
有没有办法将列表框中的多个选定项绑定到一个可观察的集合?我不知道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>