twa*_*ron 22 c# wpf xaml listview datatemplate
我有一个列表,Games其中只有a ID,a Date和a Time.我将此列表设置为DataContext.
然后,我有一个DataTemplate这样的游戏:
<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>
Run Code Online (Sandbox Code Playgroud)
要使用模板,我只是这样做:
<ListBox ItemsSource="{Binding}"></ListBox>
Run Code Online (Sandbox Code Playgroud)
我需要Button在此列表视图中的每一行添加一个具有相同点击事件的行,但会以某种方式传递点击该按钮的游戏的ID.
我怎样才能做到这一点?我被卡住了.如果它没有意义让我知道,我会尝试更好地解释.
Fre*_*lad 44
在第一部分中,添加一个Button到DataTemplate并订阅Click事件
<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>
<Button Click="Button_Click">X</Button>
</Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
在事件处理程序后面的代码中,您可以获取DataContext单击的内容Button并找出ID之类的内容
private void Button_Click(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
Game game = button.DataContext as Game;
int id = game.ID;
// ...
}
Run Code Online (Sandbox Code Playgroud)
Den*_*nis 16
容易.添加一个Button到您的DataTemplate,给它一个Command,然后设置CommandParameter="{Binding}".DataTemplate中的DataContext是对象.
根据要求,一些指向使用命令的链接.
HTH,