2011-10-12 1 views
0

WPF DataGrid를 처리하고 있습니다. 새 행을 편집하기 시작할 때 새 항목에 대해 빈 행을 표시해야합니다. 때로는 사용자가 행의 정보를 완료하지 않고 DataGrid 외부를 클릭하기 때문에 이걸 원합니다.DataGrid에 새 항목의 행이 표시되지 않습니다.

그리드가 포커스를 잃었을 때 커밋 행 변경이 발생했으나 이벤트 자체가 포커스를 잃어 버리기 때문에 이벤트가 잘못되었습니다.

데이터 격자에 포커스가 없어지면 행 변경을 어떻게 커밋합니까?

감사합니다.

+0

WPF DataGrid에서 Enter 키를 누르지 않으면 항목 행에 새 행이 추가됩니까? –

+0

그래, 그리드 이외의 컨트롤에 포커스를 맞추면 행은 여전히 ​​편집 모드에 있습니다. 따라서 사용자가 새 행을 삽입하려는 경우 편집 모드에서 행을 클릭해야하며 Enter 키를 누른 다음 새 행에 초점을 맞 춥니 다. 알아 내야 할 단계가 많습니다. –

+0

WPF DataGrid에 대한 솔직하게 포커스 기반 커밋은 특정 경우에 자극적 일 수 있습니다. 사전 커미트 유효성 검사가 그림으로 나타나면 약간의 관리가 불가능 해집니다. 나는 "Enter"접근법을 사용하는 것에 대해 낙담 한 것을 기억합니다. 그것은 많은 관리가 가능했습니다. –

답변

0

this answer을 살펴보십시오. 세부 사항은 다르지만 기본적으로 DataGrid가 포커스를 잃을 때 변경 내용을 적용하는 동작을 설정합니다. 내가 가지고있는 문제를 해결하기 위해 약간 조정할 수있었습니다.

1

아래 코드가 도움이되기를 바랍니다.

private void grdEmp_CellEditEnding(object sender, DataGridCellEditEndingEventArgs e) 
    { 
     if (!isManualEditCommit) 
     { 
      isManualEditCommit = true; 
      DataGrid grid = (DataGrid)sender; 
      grid.CommitEdit(DataGridEditingUnit.Row, true); 
      isManualEditCommit = false; 
     } 
    }