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!
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;
}
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With