WPF ListView每行都有按钮

我有一个Games列表,它只有一个ID ,一个Date和一个Time 。 我将此列表设置为DataContext

然后,我为这些游戏准备了一个DataTemplate

              //need to but a button here for each row   

要使用模板,我只是这样做:

   

我需要在此列表视图中的每一行添加一个Button ,它具有相同的点击事件,但会以某种方式传递点击该按钮的游戏ID。

我怎样才能做到这一点? 我被卡住了。 如果它没有意义让我知道,我会尝试更好地解释。

对于第一部分,向DataTemplate添加一个Button并订阅Click事件

                

在事件处理程序后面的代码中,您可以获取单击的ButtonDataContext并找出Id之类的

 private void Button_Click(object sender, RoutedEventArgs e) { Button button = sender as Button; Game game = button.DataContext as Game; int id = game.ID; // ... } 

容易。 向DataTemplate添加一个Button ,给它一个Command ,然后设置CommandParameter="{Binding}" 。 DataTemplate中的DataContext是对象。

根据要求,一些指向使用命令的链接。

  • WPF命令第1部分:基础知识
  • WPF命令第2部分:命令绑定和手势
  • MSDN了解WPF中的路由事件和命令(ADVANCED)

HTH,

使用ListBox.ItemTemplate。 然后在您的单击事件中,您可以通过DataContext获取对象。

       private void btnMoveFDAup(object sender, RoutedEventArgs e) { Button btn = ((Button)sender); // btn.DataContext will get you to the row object where you can retrieve the ID }