HOW TO GET SELECTED ITEMS IN WPF CHECKBOX LISTBOX

Garry Winogrand

Total Post:24

Points:168
Posted by  Garry Winogrand
WPF 
WPF
 8210  View(s)
Ratings:
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

  1. shreesh chandra shukla

    Post:105

    Points:735
    Re: How to get Selected items in WPF CheckBox ListBox

    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

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!