WPF 용 DataGrid에 문제가 있습니다. 편집하는 동안 현재 셀의 텍스트를 가져오고 싶습니다. 문제는 먼저 셀을 커밋하지 않고도 값을 가져올 수 없다는 것입니다. 먼저 텍스트를 커밋하기 전에 유효성을 검사하려고합니다.WPF DataGrid 커밋하지 않고 더티 셀 데이터 가져 오기
감사합니다.
WPF 용 DataGrid에 문제가 있습니다. 편집하는 동안 현재 셀의 텍스트를 가져오고 싶습니다. 문제는 먼저 셀을 커밋하지 않고도 값을 가져올 수 없다는 것입니다. 먼저 텍스트를 커밋하기 전에 유효성을 검사하려고합니다.WPF DataGrid 커밋하지 않고 더티 셀 데이터 가져 오기
감사합니다.
다른 방법이 있습니다.
가장 깨끗한 모델은 IDataErrorInfo
을 모델에 구현하고 ValidatesOnDataError=true
을 바인딩에 설정하는 것입니다. (만약 당신이 IDataErrorInfo
에 대해 모른다면, 매우 유용하고 사용하기가 쉽기 때문에 당신이 그것을 기댈 시간을 좀 가져야합니다.)
적은 코드를 필요로하는 또 다른 대안 그러나 좀 덜 깨끗한 수도 있습니다 :
CellEditEnding
(또는 DataGrid.OnCellEditEnding
무시)에 이벤트 처리기를 추가하고 커밋되기 전에 입력 된 데이터의 유효성을 검사 할 수 있습니다. 유효성 검사가 실패하면 CellEditEnding 이벤트를 취소하면됩니다. 당신이 OnCellEditEnding
를 오버라이드 (override)하는 경우
여기,
내가 당신을 위해 쉬운 예를했다 여기에 난 그냥 텍스트 입력 구문 분석하려고 (단지 이벤트 핸들러를 추가하는 등 거의 동일하다) 코드입니다. 이 충분히 명확 :)
감사했다
희망 : 당신은 여기
DataGridCellEditEndingEventArgs
의
EditingElement
속성을 사용하여 사용자가 입력 한 텍스트에 액세스 할 수있는 코드입니다! 다른 해결책이 효과가있었습니다. 그러나 나는 또한 "OnCellEditEnding"을 사용하여 다른 셀로 전송 된 직후/DataGrid가 포커스를 잃을 때 각 셀을 커밋합니다. 이것을 사용하면 다른 셀로 이전하면 마지막 셀을 커밋하지 않습니다. 그 주위에 방법이 있습니까? – enlilbinny글쎄 .. 내게 전혀 이상하게 보이지는 않는다. 기본적으로 DataGrid가 유효성이 확인되지 않은 텍스트를 커밋하지 못하게하려는 것이다. 따라서 무효 텍스트를 작성하고 셀을 전환하는 경우 정상적인 동작은 유효하지 않은 텍스트를 커밋하지 않는 것입니다. 맞습니까? – Damascus
예, 맞습니다. 모든 키 입력을 확인하고 있습니다. – enlilbinny