2010-05-06 72 views
2

我有一個WPF中的SelectionMode設置爲多個列表框,並可以多選列表框中的項目。但是,SelectedItem沒有更新它綁定的Observable集合。將列表框SelectedItem綁定到Observable集合?

有沒有辦法將多個選定的項目從ListBox綁定到Observable集合?

+0

http://stackoverflow.com/questions/803216/managing-multiple-的可能重複選擇與 - MVVM – Will 2010-05-06 12:43:12

回答

1

我不知道mvvm這樣做的方式, 我有一個工作解決方案,包含mvvm &代碼隱藏。

代碼隱藏

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

的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> 

相關問題