BillyPilgrim
BillyPilgrim

Reputation: 551

Passing a value along from a Button in a WPF ListView

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!

Upvotes: 4

Views: 8375

Answers (3)

John Gardner
John Gardner

Reputation: 25146

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.

Upvotes: 4

Philip Rieck
Philip Rieck

Reputation: 32568

Command parameters are good for this:

 <Button Content="Edit" Width="50" 
      Command="{some command here}" 
      CommandParameter="{Binding ID}" />

For the "some command here" part, make sure you are declaring a command.

Upvotes: 2

RQDQ
RQDQ

Reputation: 15579

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;
}

Upvotes: 4

Related Questions