How to get Selected items in WPF CheckBox ListBox

不问归期 提交于 2019-11-29 16:24:41

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

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
amirkabirisamani

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());
         }
     }
 }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!