How to get Selected items in WPF CheckBox ListBox

前端 未结 3 1510
独厮守ぢ
独厮守ぢ 2020-12-21 23:13

Am Using the checkbox in listbox items, how to get the selected checkboxes from the list



        
相关标签:
3条回答
  • 2020-12-21 23:50

    I would suggest this code:

     private void save_Click(object sender, RoutedEventArgs e)
     {
         foreach (CheckBox item in list1.Items)
         {
             if (item.IsChecked)
             {
                 MessageBox.Show(item.Content.ToString());
             }
         }
     }
    
    0 讨论(0)
  • 2020-12-22 00:06

    Have your template like this

    <ListBox.ItemTemplate>
       <DataTemplate> 
     ........
       <CheckBox Content="" 
          IsChecked="{Binding IsSelected, Mode=TwoWay,
          RelativeSource={RelativeSource FindAncestor, 
          AncestorType={x:Type ListViewItem}}}"  />
     ..........
        <!-- Use Other UIElements to Show your Data -->
    

    then the above binding will sync two way with your models isSelected and list view selection, then in code use SelectedItems.

    For Each s As myPoco In myListView1.SelectedItems
       ' do something here with
    Next
    
    0 讨论(0)
  • 2020-12-22 00:12

    You could move the data context for each of these items away from the UI and create an ObservableCollection of objects

    public ObservableCollection<CheckedItem> List { get;set;}
    
    public class CheckedItem : INotifyPropertyChanged
    {
      private bool selected;
      private string description;
    
      public bool Selected 
      { 
         get { return selected; }
         set 
         {
            selected = value;
            OnPropertyChanged("Selected");
         }
      }
    
      public string Description 
      { 
         get { return description; }
         set
         {
             description = value;
             OnPropertyChanged("Description");
         }
       }
    
      /* INotifyPropertyChanged implementation */
    }
    

    Then in your ListBox ItemTemplate

    <ItemTemplate>
      <DataTemplate>
        <CheckBox IsChecked="{Binding Path=Selected}" 
                  Content={Binding Path=Description}" />
      </DataTemplate>
    </ItemTemplate>
    

    Your selected items are now available in the ObservableCollection rather than looping through UI elements

    0 讨论(0)
提交回复
热议问题