繁体   English   中英

GridView中的按钮:我怎么知道哪个项目?

[英]Button in GridView: How do I know which Item?

我想在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
    }

是否可以通过某种方式将此行上的项目绑定到RoutedEventArgs?

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

假设您的源类别是Calibration

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

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

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

可以在网上找到这样的示例,这是一个示例 :将Command参数传递给RelayCommand

如何在GridView上使用OnSelectedIndexChanged更改的事件?

public void Grid_selectedIndexChanged(Object sender, EventArgs e)
{
    GridViewRow row = Grid.SelectedRow;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM