Fetching selected value from List Box in Silverlight


Let us say you have a list box as below. You have a requirement that on click of button fetch value of the same row button belongs to.

For example if you are clickingthe second cross, you should be able to fetch the value Pinal, SqlServer , 500 from the list box.

LstSil1.gif

In the above list box

  1. There is a button (cross image) in each item.
  2. Text blocks bind with data.
  3. List box is bind to the collection.

XAML of list box is as below,

   <ListBox x:Name="lstData" Margin="5,7,6,15">
                <ListBox.ItemTemplate>
                    <DataTemplate >
                        <Grid x:Name="TopGrid">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="50" />
                                <ColumnDefinition Width="*" />
                            </Grid.ColumnDefinitions>
                            <Button Margin="5,5,5,5" Click="Button_Click">
                                <Button.Template >
                                    <ControlTemplate >
                                        <Image Source="delete.png" VerticalAlignment="Center"   Height="30" Width="30"/>
                                    </ControlTemplate>
                                </Button.Template>
                            </Button>
                            <Grid x:Name="nestedGrid" Grid.Column="1">
                            <Grid.RowDefinitions>
                                <RowDefinition Height="auto" />
                                <RowDefinition Height="auto" />
                            </Grid.RowDefinitions>                           
                           
<TextBlock Text="{Binding Name}" Style="{StaticResource PhoneTextTitle2Style}" />
                                <StackPanel Grid.Row="1" Orientation="Horizontal">
                                    <TextBlock Text="{Binding Interest}"  Style="{StaticResource PhoneTextSubtleStyle}" />
                                <TextBlock Text="{Binding Totalposts}" Style="{StaticResource PhoneTextAccentStyle}"/>
                            </StackPanel>
                        </Grid>
                        </Grid>
                    </DataTemplate>
                </ListBox.ItemTemplate>

Item source of list box is set to List of Bloggers.

LstSil2.gif

Bloggers is a custom class as below,

public class Bloggers : INotifyPropertyChanged
    {
        private string name;
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                NotifyPropertyChanged("Name");
                name = value;
            }
        }

        private string interest;
        public string Interest
        {
            get
            {
                return interest;
            }
            set
            {
                NotifyPropertyChanged("Interest");
                interest = value;
            }
        }

        private int  id;
        public int  Id
        {
            get
            {
                return id;
            }
            set
            {
                NotifyPropertyChanged("Id");
                id = value;
            }
        }

         private int  totalposts;
         public int Totalposts
        {
            get
            {
                return totalposts;
            }
            set
            {
                NotifyPropertyChanged("Totalposts");
                totalposts = value;
            }
        }

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        // Used to notify the page that a data context property changed
        private void NotifyPropertyChanged(string propertyName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
            }
        }

        #endregion

    }

Now on the click event of button if you want to fetch a particular list item then first take the data context as blogger

LstSil3.gif

Now you will able to use the data as below

LstSil4.gif

For the on click event of button you need to write code as below to fetch  aparticular item list value.

        private void Button_Click(object sender, RoutedEventArgs e)
        {

            Bloggers data = (sender as Button).DataContext as Bloggers;
            ListBoxItem bloggerToDeleteFromListBox = this.lstData.ItemContainerGenerator.ContainerFromIte
(data)
                                                     as ListBoxItem;          
            var Name = data.Name
}


In this way you can fetch the value of a particular list item. I hope this post was useful. Thanks for reading.

If you find my posts useful you may like to follow me on twitter http://twitter.com/debug_mode or may like Facebook page of my blog http://www.facebook.com/DebugMode.Net If you want to see post on a particular topic please do write on FB page or tweet me about that, I would love to help you.

Up Next
    Ebook Download
    View all
    Learn
    View all