从DataGrid获取SelectedItem值

时间:2013-10-02 07:46:19

标签: c# wpf datagrid entity-framework-4

我的 WPF 应用程序中有 DataGrid ,如下所示。

<DataGrid Name="stDataGrid" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTemplateColumn Header="Edit" CanUserResize="False" Width="SizeToHeader">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button" Click="btnEdit_Click">
                        <StackPanel>
                            <Image Source="images/edit.png"/>
                        </StackPanel>
                    </Button>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTextColumn Binding="{Binding Path=Name}" Header="Name" IsReadOnly="True"></DataGridTextColumn>
        <DataGridTextColumn Binding="{Binding Path=Age}" Header="Age" IsReadOnly="True"></DataGridTextColumn>
        <DataGridTextColumn Binding="{Binding Path=Sex}" Header="Sex" IsReadOnly="True"></DataGridTextColumn>
    </DataGrid.Columns>
</DataGrid>

将数据绑定到DataGrid中。

using (var context = new CLASS_DBEntities())
{
var query = from s in context.STUDENT
            orderby s.STUDENT_NAME
            select new {s.STUDENT_ID, Name = s.STUDENT_NAME, Age = s.STUDENT_AGE, 
                        Sex = s.STUDENT_SEX};

stDataGrid.ItemsSource = query.ToList();
}

当用户在DataGrid中单击Button时,我需要获得STUDENT_ID值。我怎么能这样做?

2 个答案:

答案 0 :(得分:0)

在按钮上设置与student_id相同类型的附加属性,并将其与 DataGridRow 控件的datacontext.student_id相关联,该控件应该是您所有人的父级细胞连续。

输入btnEdit_Click方法后,只需从附加属性中读取值。

答案 1 :(得分:0)

终于找到了答案。

btnEdit_Click方法中,

dynamic customerRow = stDataGrid.SelectedItem;
MessageBox.Show(customerRow.STUDENT_ID+"");