Home > DeveloperSection > Forums > How to get Selected items in WPF CheckBox ListBox
Garry Winogrand
Garry Winogrand

Total Post:24

Points:168
Posted on    July-18-2013 2:03 AM

 WPF WPF 
Ratings:


 1 Reply(s)
 5700  View(s)
Rate this:
HI developers!

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

<ListBox ItemsSource="{Binding NameList}"  HorizontalAlignment="Left" Margin="16,68,0,12" Name="listBox1" Width="156" IsEnabled="True" SelectionMode="Multiple" Focusable="True" IsHitTestVisible="True" IsTextSearchEnabled="False" FontSize="12" Padding="5" SelectionChanged="listBox1_SelectionChanged">

            <ListBox.ItemTemplate>

                <DataTemplate>

                        <StackPanel Orientation="Horizontal">                     

                               <CheckBox Content="{Binding Path=CNames}" />

                        </StackPanel>

                </DataTemplate>

            </ListBox.ItemTemplate>

        </ListBox>

I tried to loop thru the selected items in the listboxitems, but it throws exception in listboxitem

 private void btnSelected(object sender, RoutedEventArgs e)

    {

        foreach (ListBoxItem item in listBox1.Items)

        {

            if (item.ToString() == "true")

            {

                MessageBox.Show(item.Content.ToString());

            }

        }

    }

thanks



shreesh chandra shukla
shreesh chandra shukla

Total Post:105

Points:735
Posted on    July-18-2013 2:38 AM

Solution!

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


Don't want to miss updates? Please click the below button!

Follow MindStick