Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing a value along from a Button in a WPF ListView

Tags:

listview

wpf

xaml

I have a collection that I am displaying in a WPF Listview. I will have an edit button in each row and need to pass an ID to another control on the screen when that's clicked. I'm not going to be editing in place so I'm not using the Gridview.

How do I pass this ID to my other control?

Currently my XAML looks like this.

<ListView Name="uxPackageGroups" ItemsSource="{Binding PackageGroups}" BorderThickness="0" Grid.Row="6" Grid.Column="1" Width="300" BorderBrush="#FF0000E8">
<ListView.ItemTemplate>
    <DataTemplate>
        <StackPanel Name="uxStackPanel" Orientation="Horizontal">
            <Button Content="Edit" Width="50" />
            <Label Content="{Binding Name}" Height="20" Margin="0" Padding="0"/>
        </StackPanel>
    </DataTemplate>
</ListView.ItemTemplate>

This WPF newbie thanks you in advance!

like image 406
BillyPilgrim Avatar asked Dec 28 '22 06:12

BillyPilgrim


2 Answers

You're using databinding, so it's pretty easy. In the code that is responding to the button click, get a reference to the button and examine its DataContext property. That will have a reference to the underlying object that you bound it to.

protected void EditButton_Click(object sender, RoutedEventArgs e)
{
   TextBox textBox = (TextBox)sender;

   int id =  ((TheBounObjectType)textBox.DataContext).Id;
}
like image 154
RQDQ Avatar answered Jan 12 '23 14:01

RQDQ


If you don't want to go as far as creating commands to do it, you could use the "Tag" property of the button:

<Button Content="Edit" Width="50" Tag={Binding} />

or

<Button Content="Edit" Width="50" Tag={Binding ID} />

and then reference the button's tag property in your event handler.

like image 27
John Gardner Avatar answered Jan 12 '23 13:01

John Gardner