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
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
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