Skip to main content
A newer version of this page is available. .

KeyToCommand Class

Allows you to bind a KeyGesture to a command.

Namespace: DevExpress.Mvvm.UI

Assembly: DevExpress.Xpf.Core.v21.2.dll

NuGet Package: DevExpress.Wpf.Core

Declaration

public class KeyToCommand :
    EventToCommandBase

Remarks

In the following code sample, the KeyToCommand behavior invokes the CommitCommand when a user focuses a TextBox control and presses the Enter key:

<UserControl ...
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" 
    xmlns:ViewModels="clr-namespace:DXApplication1.ViewModels">
    <UserControl.DataContext>
        <ViewModels:MainViewModel/>
    </UserControl.DataContext>
    <Grid>
        <TextBox>
            <dxmvvm:Interaction.Behaviors>
                <dxmvvm:KeyToCommand KeyGesture="Enter" Command="{Binding CommitCommand}"/>
            </dxmvvm:Interaction.Behaviors>
        </TextBox>
    </Grid>
</UserControl>
using DevExpress.Mvvm;
using DevExpress.Mvvm.DataAnnotations;

public class MainViewModel : ViewModelBase {
    [Command]
    public void Commit() {
        // ...
    }
}

Subscribe to Another Event

The KeyToCommand behavior is subscribed to the KeyUp event (the default event). The following code sample changes the subscribed event to KeyDown:

<UserControl ...
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" 
    xmlns:ViewModels="clr-namespace:DXApplication1.ViewModels">
    <UserControl.DataContext>
        <ViewModels:MainViewModel/>
    </UserControl.DataContext>
    <Grid>
        <TextBox>
            <dxmvvm:Interaction.Behaviors>
                <dxmvvm:KeyToCommand KeyGesture="Enter" Command="{Binding CommitCommand}" EventName="KeyDown"/>
            </dxmvvm:Interaction.Behaviors>
        </TextBox>
    </Grid>
</UserControl>
using DevExpress.Mvvm;
using DevExpress.Mvvm.DataAnnotations;

public class MainViewModel : ViewModelBase {
    [Command]
    public void Commit() {
        // ...
    }
}

Handle Events in a Control’s Parent Element

The following code sample tunnels the KeyUp event to the MainView (as the PreviewKeyUp event) and invokes the NewMessage command if a user focuses the MainView and pressses the Enter key:

<UserControl ...
    xmlns:dxmvvm="http://schemas.devexpress.com/winfx/2008/xaml/mvvm" 
    xmlns:ViewModels="clr-namespace:DXApplication1.ViewModels">
    <dxmvvm:Interaction.Behaviors>
        <dxmvvm:KeyToCommand KeyGesture="Enter" Command="{Binding NewMessageCommand}" EventName="PreviewKeyUp"/>
    </dxmvvm:Interaction.Behaviors>
    <UserControl.DataContext>
        <ViewModels:MainViewModel/>
    </UserControl.DataContext>
    <StackPanel>
        <TextBox Text="Type in a name">
        <TextBox Text="Type in a last name"/>
    </StackPanel>
</UserControl>
using DevExpress.Mvvm;
using DevExpress.Mvvm.DataAnnotations;

public class MainViewModel : ViewModelBase {
    [Command]
    public void NewMessage() {
        // ...
    }
}

Inheritance

Show 13 items
Object
DispatcherObject
DependencyObject
Freezable
Animatable
DevExpress.Mvvm.UI.Interactivity.AttachableObjectBase
DevExpress.Mvvm.UI.Interactivity.Behavior
DevExpress.Mvvm.UI.Interactivity.TriggerBase
DevExpress.Mvvm.UI.Interactivity.TriggerBase<DependencyObject>
EventTriggerBase<DependencyObject>
DevExpress.Mvvm.UI.Interactivity.EventTrigger
EventToCommandBase
KeyToCommand
See Also