2013-11-20 102 views
1

http://i.stack.imgur.com/zllpr.png如何查找在WPF上的DataGrid中單擊的單元格的行值?

我想單擊這個數據網格的最後一行(在上圖中)。點擊這個時,我希望能夠找到哪個行被點擊並將行號傳遞給另一個表單。

以下是我已經嘗試了一些嘗試:

private void CellClicked(object sender, MouseButtonEventArgs e) 
    { 
     int cell = dgFake.Items.IndexOf(((DataRowView)dgFake.Items[5]).Row); 

     xamlAllocteAudits window = new xamlAllocteAudits 
     { 
      DataContext = cell 
     }; 
     window.Show(); 

這種嘗試留校的「-1」不管我在哪裏列點擊。

private void CellClicked(object sender, MouseButtonEventArgs e) 
    { 
     int cell = dgFake.Items.IndexOf(dgFake.SelectedIndex); 

     xamlAllocteAudits window = new xamlAllocteAudits 
     { 
      DataContext = cell 
     }; 
     window.Show(); 

這種嘗試顯示不同的號碼開始「-1」和每遞增我點擊在列的單元格的時間,但即使我單擊底部的單元格,第一次點擊將始終是「-1」 ,所以我認爲這不是行號值。

回答

0

Ben看看code它告訴你通過簡單的父母導航技術來檢測已被點擊的列,單元格和行的機制。

0

類似的問題已回答here看一看。

+0

感謝您的評論,我試了這個,它再次出現-1。 –

0

可以使用SelectionChanged事件要做到這一點:

private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{ 
    foreach (var row in dataGrid.SelectedItems) 
    { 
     int index = dataGrid.Items.IndexOf(row); 
    } 
} 

如果您使用的是單行選擇,那麼你可以這樣做:

private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{ 
    int index = dataGrid.SelectedIndex; 
} 

如果你只是想單元的數據,那麼你可以這樣做:

private void dataGrid_SelectionChanged(object sender, EventArgs e) 
{ 
    foreach (DataGridCellInfo cell in dataGrid.SelectedCells) 
    { 
     // do something with cell 
    } 
} 
+0

我有一個處理程序在XAML中設置爲我的方法CellClicked。當我將我的代碼移動到Selectionchanged時,它從來沒有碰到過這種方法?也許是因爲我沒有改變選擇? –

相關問題