gpt4 book ai didi

c# - GridView 中的按钮 : How do I know which Item?

转载 作者:太空狗 更新时间:2023-10-29 23:17:50 24 4
gpt4 key购买 nike

我想在 GridView 的每一行中都有一个按钮来对该行执行操作。我能够获得点击,但是如何确定该按钮属于哪一行?

我目前的情况是这样的:

        <ListView ItemsSource="{Binding Calibrations}">
<ListView.View>
<GridView>
<GridView.Columns>
<GridViewColumn Header="Voltage [kV]" Width="70" DisplayMemberBinding="{Binding Voltage}" />
<GridViewColumn Header="Filter" Width="100" DisplayMemberBinding="{Binding FilterName}" />
<GridViewColumn Header="Calibration Date" Width="100" DisplayMemberBinding="{Binding CalibrationDate}" />
<GridViewColumn Header="Calibration" Width="60">
<GridViewColumn.CellTemplate>
<DataTemplate>
<Button Content="Start" Click="OnStart" />
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView.Columns>
</GridView>
</ListView.View>
</ListView>


private void OnStart(object sender, RoutedEventArgs e)
{
// how do I know, on which item this button is
}

是否有某种方法可以将此行上的项目绑定(bind)到 RoutedEventArgs?

最佳答案

点击的ButtonDataContext 将是您要查找的项目

假设您的源类是Calibration

private void OnStart(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
Calibration clickedCalibration = button.DataContext as Calibration;
// ...
}

另一种方法是使用 Command 而不是 Click 事件。这将允许您像这样绑定(bind) CommandParameter

<Button Command="{Binding MyCommand}"
CommandParameter="{Binding}"/>

这样的例子在网上随处可见,这里有一个:Pass Command Parameter to RelayCommand

关于c# - GridView 中的按钮 : How do I know which Item?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7310011/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com