2010-05-06 8 views
2

Je dispose d'une zone de liste dans WPF avec le paramètre SelectionMode défini sur Multiple, et je peux sélectionner plusieurs éléments dans la zone de liste. Toutefois, SelectedItem ne met pas à jour la collection Observable à laquelle il est lié.Liaison d'une boîte à liste SelectedItem à une collection observable?

Existe-t-il un moyen de lier les éléments multiples sélectionnés à partir d'un ListBox à une collection Observable?

+0

double possible de http://stackoverflow.com/questions/803216/managing-multiple- selections-with-mvvm – Will

Répondre

1

Je ne connais pas la façon de procéder mvvm, J'ai une solution de travail combinée de 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> 

Questions connexes