在向MVVM应用添加密钥快捷方式时遇到困难。搜索了解决方案,但找不到触发命令受DataContext阻碍的示例。这让我觉得我可能试图以错误的方式做到这一点。
请参阅以下示例。
Window XAML
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:WpfApplication1" x:Class="WpfApplication1.MainWindow"
Title="Stackoverflow" Height="350" Width="525">
<Window.DataContext>
<local:MainViewModel/>
</Window.DataContext>
<Window.InputBindings>
<KeyBinding Key="F" Modifiers="Control"/>
</Window.InputBindings>
<Grid>
<Button Content="Interface Action" Click="ButtonBase_OnClick"/>
</Grid>
</Window>
窗口代码隐藏
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
// Do Work
}
}
尝试将输入绑定链接到按钮,最佳设计选择是什么?这些是我能想到的选择:
将代码隐藏设置为数据上下文,创建代码隐藏属性ViewModel并在XAML树中更深入地定义路径
在代码隐藏中写一个按键事件并从那里触发事件
这两个选项似乎在美学上都是错误的,或者导致需要编写大量额外代码。从MVVM的角度来看,最好的选择是什么?