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 clicking second cross, you should able to fetch value Pinal, SqlServer , 500 from the list box.
In above list box
- There is a button (cross image) in each item.
- Text blocks bind with data.
- 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.
Bloggers class is as below,
Note: Make sure you are calling OnNotifyPropertyChanged() after seeting the value of the property [Edited]
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 click event of button if you want to fetch particular list item then first take data context as blogger
Then fetch list box item as below,
Now you would able to use data as below
On click event of button you need to write code as below to fetch particular item list value.
private void Button_Click(object sender, RoutedEventArgs e) { Bloggers data = (sender as Button).DataContext as Bloggers; ListBoxItem bloggerToDeleteFromListBox = this.lstData.ItemContainerGenerator.ContainerFromItem(data) as ListBoxItem; var Name = data.Name }
In this way you can fetch the value of particular list item. I hope this post was useful. Thanks for reading J
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.
Follow @debug_mode
Leave a Reply