获取 GridView 的点击行

Get Clicked Row of GridView

我在每一行上附加了一个 RadGridView 和一个 HyperLink 按钮。我想获取超链接 Click 事件中列 ID 的值。我尝试了这个但得到了 NullReferenceException 因为 SelectedItem 包含空值。

private void OnGetDetailsClick(object sender, RoutedEventArgs e)
{
   ProductDetail productDetail = new ProductDetail();
   Product product = this.grdProductGrid.SelectedItem as Product;
   productDetail.ProductId = product.ProductID
}

Xaml 对于 RadGridView

<telerik:RadGridView HorizontalAlignment="Left" 
                          Height="278" 
                          VerticalAlignment="Top" 
                          Width="1220" 
                          Margin="20,0,0,0" 
                          Name="grdProductGrid"
                          ColumnWidth="*"
                          AutoGenerateColumns="False" >

                <telerik:RadGridView.Columns>
                    <telerik:GridViewDataColumn x:Name="ID" 
                                                DataMemberBinding="{Binding Path=ProductID}" 
                                                Header="ID" 
                                                IsReadOnly="True" 
                                                IsVisible="False"/>


                    <telerik:GridViewDataColumn x:Name="Name" 
                                                DataMemberBinding="{Binding Path=Name}" 
                                                Header="Name" 
                                                IsReadOnly="True" />

                    <telerik:GridViewDataColumn x:Name="Description" 
                                                DataMemberBinding="{Binding Path=Description}" 
                                                Header="Description" 
                                                IsReadOnly="True" />


                    <telerik:GridViewColumn Header="Details" Width="*">
                        <telerik:GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <StackPanel Orientation="Horizontal">
                                    <HyperlinkButton Content="Details" 
                                                     Tag="Hyperlinkbutton" 
                                                     HorizontalAlignment="Center" 
                                                     Click="OnGetDetailsClick"/> 
                                </StackPanel>
                            </DataTemplate>
                        </telerik:GridViewColumn.CellTemplate>
                    </telerik:GridViewColumn>
                  </telerik:RadGridView.Columns>
</telerik:RadGridView>

我的代码有什么问题?如何访问 Click 事件中的行?

您可以使用 CommandParameterProduct 传递给点击事件

  <HyperlinkButton Content="Details" 
    Tag="Hyperlinkbutton" 
    HorizontalAlignment="Center" 
   Click="OnGetDetailsClick" CommandParameter={Binding .}/> 

在你后面的代码中有

Product product=((Product)((HyperlinkButton)sender).CommandParameter)