/ / Viazanie zoznamovej položky SelectedItem na pozorovateľnú zbierku? - wpf, listbox, vybraná položka

Viazanie zoznamu položiek SelectedItem na zbierku Observationble? - wpf, listbox, selectitem

Mám Listbox vo WPF s SelectionMode nastaveným na Multiple a môžem vyberať viac položiek v Listboxe. SelectedItem však neaktualizuje pozorovateľnú zbierku, na ktorú je viazaný.

Existuje spôsob, ako spojiť viac vybraných položiek zo zoznamu do pozorovateľnej zbierky?

odpovede:

1 pre odpoveď č. 1

neviem spôsob MVVM, Mám pracovné riešenie kombinované s mvvm & codebehind.

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);
}
}

ViewModel

    private ObservableCollection<States> _listofselecteditems;
public ObservableCollection<States> ListOfSelectedItems
{
get
{
return _listofselecteditems;
}
set
{
_listofselecteditems = value;
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>