2013-10-02 91 views
0

我的DataGrid在我的WPF應用程序如下。從DataGrid獲取SelectedItem值

<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中的按鈕時,我需要獲得STUDENT_ID的值。我怎樣才能做到這一點 ?

回答

0

設置相同類型的附加屬性爲student_id您的按鈕,並relativly將其綁定到DataGridRow控制這應該是父行中的所有細胞您的datacontext.student_id

一旦你進入btnEdit_Click方法只是宣讀了您的附加屬性值。

+0

謝謝您的回答。你能用例子來解釋一下嗎?我是新來的wpf。所以我不清楚這一點。 – Bishan

+0

附加屬性是一個WPF概念允許控制例如,按鈕可以延長。那就是你如何告訴你的按鈕你有一個名爲student_id的屬性。而當你點擊你的按鈕時,你只需讀出附件中的值。 http://msdn.microsoft.com/en-us/library/ms749011.aspx –

0

由我終於找到了答案。

btnEdit_Click方法,

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