2013-11-20 2 views
1

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로 옮기면 결코 그 메서드를 안타? 아마 선택을 변경하지 않기 때문에? –

관련 문제