I have a list of Games
which just has an ID
, a Date
, and a Time
.
I am setting this list as the DataContext
.
I then have a DataTemplate
for these games that is:
<DataTemplate DataType="{x:Type loc:Game}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="100"></ColumnDefinition>
</Grid.ColumnDefinitions>
<TextBlock Name="dateBlock" Grid.Column="0" Grid.Row="1"
Text="{Binding Date, StringFormat=d}"></TextBlock>
<TextBlock Name="TimeBlock" Grid.Column="1" Grid.Row="1"
Text="{Binding Time}"></TextBlock>
//need to but a button here for each row
</Grid>
</DataTemplate>
To use the template, I am simply just doing this:
<ListBox ItemsSource="{Binding}"></ListBox>
I need to add a Button
to each line in this list view that have the same click event, but will somehow pass the ID of the game for which button is being clicked.
How can I do this? I am stuck. If it doesn't make sense let me know and I will try to explain better.
Easily. Add a
Button
to your DataTemplate, give it aCommand
and then set theCommandParameter="{Binding}"
. The DataContext within a DataTemplate is the object.As requested, some links to using commands.
HTH,
With a ListBox.ItemTemplate. Then in your click event you can get the object via DataContext.
For the first part, add a
Button
to theDataTemplate
and subscribe to theClick
eventIn the code behind event handler, you can get the
DataContext
of the clickedButton
and find out the Id like