我需要为Window创建输入绑定。
public class MainWindow : Window
{
public MainWindow()
{
SomeCommand = ??? () => OnAction();
}
public ICommand SomeCommand { get; private set; }
public void OnAction()
{
SomeControl.DoSomething();
}
}
<Window>
<Window.InputBindings>
<KeyBinding Command="{Binding SomeCommand}" Key="F5"></KeyBinding>
</Window.InputBindings>
</Window>
如果我用CustomCommand : ICommand
初始化SomeCommand
,它不会被触发。SomeCommand
属性getter永远不会被调用。
5条答案
按热度按时间rhfm7lfc1#
对于您的情况,最好的方法是使用MVVM模式
XAML:
后面的代码:
在视图模型中:
然后你需要一个
ICommand
的实现。这是一个简单而有用的类。omtl5h9j2#
对于修改器(组合键):
pnwntuvh3#
这可能为时已晚,但这是最简单和最短的解决方案。
lndjwyie4#
您必须创建自己的
Command
实现ICommand
接口,并使用该Command
的示例初始化SomeCommand
。现在你必须将Window的
DataContext
设置为self,以使Command
Binding
工作:或者您必须将
Binding
更新为dly7yett5#
通常,命令不应该存在于视图中;它应该存在于视图模型中。但是,在某些罕见的情况下,在视图中包含命令可能是有意义的。在这种情况下,确实不清楚如何将键绑定连接到命令,正如OP所发现的那样。
这是我在项目中解决这个问题的方法:
ReportCommand
是MyView
中的ICommand
,* 不是ViewModel中的 *。