Reputation: 3407
I am building a WPF app where it includes an action of adding an item to a shopping cart. A DataGrid
defined as follows is bind to a collection of Product
s, and a Button
is present for each row. Now, when a Button
is clicked, how do I know which Product
object it is for?
<DataGrid Grid.Row="1" ItemsSource="{Binding }" IsReadOnly="True" IsSynchronizedWithCurrentItem="True"
AutoGenerateColumns="False" TextBlock.FontSize="20" CanUserSortColumns="True" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Header 1" Binding="{Binding ID}" Width="2*" SortMemberPath="{Binding ID}"/>
<DataGridTextColumn Header="Header 2" Binding="{Binding Name}" Width="2*" SortMemberPath="{Binding Name}"/>
<DataGridTemplateColumn Header="Add To Cart" Width="2*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Content="Click To Add"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Upvotes: 1
Views: 2723
Reputation: 2072
You can bind Product to Tag
Property of Button
Like this :
<Button Content="Click To Add" Tag="{Binding}"/>
You will get original entity by :
Product product = button.Tag as Product
Upvotes: 3