WPF ListView每行都有按钮
我有一个Games
列表,它只有一个ID
,一个Date
和一个Time
。 我将此列表设置为DataContext
。
然后,我为这些游戏准备了一个DataTemplate
:
//need to but a button here for each row
要使用模板,我只是这样做:
我需要在此列表视图中的每一行添加一个Button
,它具有相同的点击事件,但会以某种方式传递点击该按钮的游戏ID。
我怎样才能做到这一点? 我被卡住了。 如果它没有意义让我知道,我会尝试更好地解释。
对于第一部分,向DataTemplate
添加一个Button
并订阅Click
事件
在事件处理程序后面的代码中,您可以获取单击的Button
的DataContext
并找出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 }