我有一个数据网格,其中包含一个复选框和几列。
当客户单击复选框时,我正在触发grid selectionchanged事件,该事件显示从selectedrow到标签的一些数据。
但是,当我单击按钮时,也需要选择的行数据。

有什么好的方法可以找回它吗?

最佳答案

根据您的评论,您应该尝试一下(DataGrid在XAML中被命名为dataGrid):

private void Button1_Click(object sender, RoutedEventArgs e)
{
    // If the grid is populated via a collection binding the SelectedItem will
    // not be a DataGridRow, but an item from the collection. You need to cast
    //  as necessary. (Of course this can be null if nothing is selected)
    var row = (DataGridRow)dataGrid.SelectedItem;
}




可以使用Tag(编辑:如果您使用CheckBoxColumn,则可以使用样式来执行此操作,如果遇到麻烦,我可以举个例子):

<DataGridTemplateColumn>
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <Button Click="Button1_Click"
                    Tag="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}}"/>
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>




private void Button1_Click(object sender, RoutedEventArgs e)
{
    var button = (FrameworkElement)sender;
    var row = (DataGridRow)button.Tag;
    //...
}

10-08 13:07