2012-05-24 4 views
0

일부 텍스트 열과 체크 박스가있는 템플릿 열이있는 DataGrid가 있습니다. 사용자가 해당 행의 아무 곳이나 클릭하면이 체크 박스를 전환해야합니다. 가장 좋은 방법은 무엇입니까?행 마우스 클릭시 체크 박스 토글

지금은 선택한 항목 변경 및 셀 마우스 왼쪽 버튼 클릭 이벤트에 체크 표시를 전환합니다. 그러나 이것에는 2 가지 문제가 있습니다.

첫 번째 문제는 DataGrid가 데이터 바인딩 된 경우입니다. 첫 번째 행이 선택됩니다. 하지만 셀을 클릭하면 DataRowCell.MouseLeftButtonDown 이벤트가 알 수없는 이유로 발생하지 않습니다. 그래서 체크 박스는 토글되지 않습니다. 가능한 해결책은 데이터 바인딩 후 첫 번째 행을 선택 취소하는 것입니다.

두 번째 문제는 사용자가 다른 행의 확인란을 직접 클릭하면 체크 상자가 두 번 전환된다는 것입니다. 결과적으로 체크 박스가 두 번 토글되며, 이는 체크 된 값이 변경되지 않음을 의미합니다.

요구 사항을 구현하는 가장 좋은 방법은 무엇입니까?

답변

0

확인란 is checked 속성을 행 isselected 속성에 바인딩 해봤습니까? 체크 된 값이 클릭하지 않는 한 항상 기본값으로 꺼져 있는지 여부를 지정하지 않았습니다. 그렇지 않은 경우 사용자 정의 IValueConverter를 사용하여 값을 전환 할 수 있습니다.

+0

행을 선택 취소 할 때 확인란을 선택해야하므로이 솔루션이 적합하지 않습니다. –

0

사용자가 토글하지 못하도록 CheckBox.IsEnabled = false로 설정하십시오. 포커스되지 않은 첫 번째 행을 읽기 전용으로 DataGrid를 설정하십시오.