使用InputBindings触发代码隐藏事件

时间:2014-04-28 15:40:21

标签: c# wpf xaml mvvm

在向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
    }
}

尝试将输入绑定链接到按钮,最佳设计选择是什么?这些是我能想到的选择:

  1. 将代码隐藏设置为数据上下文,创建代码隐藏属性ViewModel并在XAML树中更深入地定义路径

  2. 在代码隐藏中写一个按键事件并从那里触发事件

  3. 这两个选项似乎在美学上都是错误的,或者导致需要编写大量额外代码。从MVVM的角度来看,最好的选择是什么?

0 个答案:

没有答案