InputBinding вместо PreviewKeyDown - PullRequest
4 голосов
/ 30 мая 2011

В MainView моего кода у меня было это событие для перехвата keyDown:

#region Constructor
PreviewKeyDown += SoftKeyMainPreviewKeyDown;
#endregion

private void SoftKeyMainPreviewKeyDown(object sender, KeyEventArgs e)
{
        var focusedElement = Keyboard.FocusedElement;
        switch (e.Key)
        {
            case Key.Up:
                DoSomething();
                break;
            .....
        }
}

Теперь я хочу переместить это в InputBindings в XAML.

Моя первая попытка:

<UserControl.InputBindings>
    <KeyBinding Gesture="Up" Command="{Binding ElementName=_MaschinenView, Path=UpCommand}" />
    ....
</UserControl.InputBindings>

CodeBehind:

public ICommand UpCommand { get; set; }

UpCommand = new SimpleCommand { ExecuteDelegate = delegate { MoveFocusInDirection(Keyboard.FocusedElement, new TraversalRequest(FocusNavigationDirection.Up)); } };

С этим ничего не происходит.Скорее всего, KeyDown-Event обрабатывается дочерним элементом.

Возможно ли установить previewkeydown в XAML в InputBindings?И как этого достичь?

1 Ответ

1 голос
/ 15 ноября 2012

Вы пытались использовать свойство Key вместо Gesture?Как это:

<UserControl.InputBindings>
    <KeyBinding Key="Up" Command="{Binding ElementName=_MaschinenView, Path=UpCommand}" />
    ....
</UserControl.InputBindings>
...