내가 맞을 때 DataGrid에서 다음 컨트롤로 포커스를 제거하는 방법 을 null로 입력하십시오.WPF MVVM의 마지막 행에서 Enter 키를 누르면 DataGrid에서 포커스가 이동됩니까?
나는이 이벤트 당신의 데이터 그리드의 최대 키와 WPF MVVM
내가 맞을 때 DataGrid에서 다음 컨트롤로 포커스를 제거하는 방법 을 null로 입력하십시오.WPF MVVM의 마지막 행에서 Enter 키를 누르면 DataGrid에서 포커스가 이동됩니까?
나는이 이벤트 당신의 데이터 그리드의 최대 키와 WPF MVVM
private void dataGrid1_KeyUp(object sender, KeyEventArgs e)
{
DependencyObject dep = (DependencyObject)e.OriginalSource;
//here we find the Row is selected
//then we check is the row last row
while ((dep != null) && !(dep is DataGridRow) && !(dep is DataGridColumnHeader))
{
dep = VisualTreeHelper.GetParent(dep);
}
if (dep == null)
return;
if (dep is DataGridRow)
{
DataGridRow row= dep as DataGridRow;
//untill here we find the selected row and here we check if it
//the last row our focus go to next control after datagrid
if (row.GetIndex() == dataGrid1.Items.Count - 1)
{
dataGrid1.MoveFocus(new TraversalRequest(FocusNavigationDirection.Down));
dataGrid1.UnselectAll();
}
}
}
세트를 사용하고 있습니다. System.Windows.Controls.Primitives를 사용하여이 참조를 사용하십시오. DataGrid 및 다른 컨트롤을 창에 배치하십시오. 마지막 행을 잡으면 다음 컨트롤로 포커스가 변경됩니다. 내가가 발생할 때이 때문에 의 당신 풍부한 마지막 행의 경우 (row.GetIndex() == dataGrid1.Items.Count - 1)
는 데이터 그리드를 사용합니다 .if 내가 선택 모드로 fullrowselect와 데이터 그리드를 사용 셀 선택 모드로 내게 남겨주세요.
첫 번째 행에 도달하면 다음 컨트롤로 이동합니다. 하지만 여기서 내가 원하는 것은 null에 마지막 행과 두 번째 열에 도달했을 때 다음 컨트롤로 이동하려고 할 때입니다. –
CodeBehind 파일이 없습니다. DataGrid에서 파생 된 CustomDataGrid를 만들고 있습니다. –
내 마지막 편집을 참조하십시오 감사합니다 –
사용자 정의 컨트롤을 만드는 경우 데이터 그리드에서 파생 된 사용자 정의 컨트롤에 문제가 없습니다. 여전히 xaml 코드의 데이터 표를 선택할 수 있습니다. 속성 탐색기에서 속성 탐색기를 찾을 수있는 속성 탐색기가 나타납니다. 이벤트 및 그 후 두 번 클릭하십시오 ... 그것은 뒤에 코드에서 이벤트를 만들 것입니다 –
mvvm 이후 codebehind 사용하고 있지 않습니다. –