کاربران بیشتر برنامه*های فارسی تمایل دارند که توسط کلیدEnter درون فرم*ها حرکت کنند.در برنامه*های WPF و مخصوصا زمانی که شما از الگوی MVVM استفاده می*کنید ،انجام این کار اگر از روش*های مناسب استفاده نکنید تا حدودی سخت می*شود.
برای حرکت روی TextBox*ها و کنترل*های مشابه می*توانید این کار را به راحتی با Register کردن رویداد مربوط به آن نوع کنترل*ها توسط EventManager یک بار در ابتدای برنامه انجام دهید.

public partial class App : Application
{ EventManager.RegisterClassHandler(typeof(TextBox), TextBox.KeyDownEvent, new KeyEventHandler(TextBox_KeyDown));
...
}
private void TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key != Key.Enter)
return;
var focusedElement = Keyboard.FocusedElement as TextBox;
focusedElement.MoveFocus(new TraversalRequest(FocusNavigationDirection .Next));
}


اما همانطور که در عنوان مطلب آورده شده است در این مطلب تصمیم دارم حرکت روی سلول*های دیتا گرید توسط کلید Enter را شرح بدهم. برای این کار نیز یک راه حل ساده وجود دارد و آن شبیه سازی فراخوانی کلید Tab هنگام فشرده شدن کلید Enter است.چون همانطور که می*دانید کلید Tab به صورت پیش فرض حرکت روی سلول*ها را انجام می*دهد.برای انجام آن کافی ست دیتاگرید خود را سفارشی کرده و در متد OnPreviewKeyDown عملیات زیر را انجام دهید:

public class CommonDataGrid : DataGrid
{
protected override void OnPreviewKeyDown(KeyEventArgs e)
{
base.OnPreviewKeyDown(e);
if (e.Key != Key.Enter || Keyboard.PrimaryDevice.ActiveSource == null) return;
this.CommitEdit();
var args = new KeyEventArgs
(Keyboard.PrimaryDevice,
Keyboard.PrimaryDevice.ActiveSource, 0, Key.Tab) { RoutedEvent = Keyboard.KeyDownEvent };
InputManager.Current.ProcessInput(args);
}
}