【发布时间】:2017-11-06 14:40:59
【问题描述】:
我有一个标准的 WPF 按钮,它使用 cal:Message.Attach 在 ViewModel 中执行一个函数。如果我按下 F2 按钮,我也想执行相同的功能。
是否有使用 Caliburn Micro 绑定的简单 xaml 声明可以启用此功能?
【问题讨论】:
标签: c# wpf xaml mvvm caliburn.micro
我有一个标准的 WPF 按钮,它使用 cal:Message.Attach 在 ViewModel 中执行一个函数。如果我按下 F2 按钮,我也想执行相同的功能。
是否有使用 Caliburn Micro 绑定的简单 xaml 声明可以启用此功能?
【问题讨论】:
标签: c# wpf xaml mvvm caliburn.micro
覆盖引导程序的 Configure() 方法:https://github.com/Caliburn-Micro/Caliburn.Micro/blob/master/samples/scenarios/Scenario.KeyBinding/Bootstrapper.cs
...试试这个:
<Button x:Name="TheFunction"
Content="Click"
cal:Message.Attach="[Key F2] = [TheFunction];" />
在 GitHub 上的官方 repo 中有完整的代码示例:https://github.com/Caliburn-Micro/Caliburn.Micro/tree/master/samples/scenarios/Scenario.KeyBinding
【讨论】:
<Button.InputBindings> 时偶然发现了它 - 在按钮没有获得焦点时获取调用的函数?
您必须为事件添加一个处理程序:
public MainWindow()
{
InitializeComponent();
this.PreviewKeyDown += new KeyEventHandler(MainWindow_PreviewKeyDown);
}
void MainWindow_PreviewKeyDown(object sender, KeyEventArgs e)
{
if ((e.Key == Key.F2))
{
//DO SOMETHING
}
}
【讨论】: