DataGrid 선택 변경 이벤트에서 체크를 수행하고 있습니다. 내 조건이 만족되면 코드가 실행되어야하고 선택한 항목이 강조 표시되어야합니다 (또는 포커스를 얻음). 조건이 만족스럽지 않으면 컨트롤이 반환되고 이전에 선택된 항목이 선택된 상태로 유지되어야합니다 ( ).WPF DataGrid SelectionChanged 이벤트 취소 셀 포커스 문제
조건이 충족되지 않으면 선택한 항목이 변경되지 않고 (원하는대로 작동 함) 포커스가 여전히 현재 선택된 셀로 이동하므로 선택된 셀이 이전 셀인 반면, 초점은 사건을 해고 한 세포입니다.
나는 datagrid.dispatcher.invoke 접근 방식을 시도했지만 작동하지 않는 것 같습니다. 또한 DataGrid.selectedindex = e.removeditem [0]을 설정하여 컨트롤을 선택 변경 이벤트로 다시 유도하므로 연속 루프가됩니다.
무엇을 제안하십시오.
EDIT :
dataGrid_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (!IsDirty)
{
if (e.AddedItems.Count > 0)
{
SelectedProfile = e.AddedItems[0] as profile;
}
if (e.RemovedItems.Count > 0)
{
}
}
else
{
MessageBox.Show("Save the profile selected", MessageBoxButton.OK, MessageBoxImage.Warning);
return;
}
}
이 조건을 기반으로하는 조건은 무엇이며 선택을 취소하는 방법은 무엇입니까? 대신에'DataGridRow' 또는'DataGridCell'에'IsReadOnly'를 설정하는'DataTrigger'로 빠져 나올 수 있습니다. – Rachel
플래그는 다른 함수에서 값을 가져오고 플래그가 설정되었는지 여부에 따라 DataGrid 셀을 변경, 난 세포의 변화를 제한했지만 어떤 경우에는 클릭 한 새로운 세포로 이동합니다 초점을 제한 할 수 없습니다. 선택 변경 이벤트 등록 취소 중 하나가 작동하지 않습니다 –
이전에 선택한 셀이 원하는대로 강조 표시되었지만 클릭 한 셀이 편집 가능하게 된 선택 변경 이벤트에서 DataGrid.Dispatcher.BeginInvoke()를 사용했습니다. –