在WPF中创建密钥绑定

我需要为Window创建输入绑定。

public class MainWindow : Window { public MainWindow() { SomeCommand = ??? () => OnAction(); } public ICommand SomeCommand { get; private set; } public void OnAction() { SomeControl.DoSomething(); } } 

      

如果我使用一些CustomCommand初始化SomeCommand:ICommand它不会触发。 永远不会调用SomeCommand属性get()。

对于你的情况最好的方式使用MVVM模式

XAML:

       ..... 

代码背后:

  public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } } 

在您的视图模型中:

 public class MyViewModel { private ICommand someCommand; public ICommand SomeCommand { get { return someCommand ?? (someCommand = new ActionCommand(() => { MessageBox.Show("SomeCommand"); })); } } } 

然后你需要一个ICommand的实现。 这个简单有用的课程。

  public class ActionCommand : ICommand { private readonly Action _action; public ActionCommand(Action action) { _action = action; } public void Execute(object parameter) { _action(); } public bool CanExecute(object parameter) { return true; } public event EventHandler CanExecuteChanged; } 

对于修饰符(键组合):

  

您必须创建自己的Command实现ICommand接口,并使用该Command的实例初始化SomeCommand

现在,您必须将Window的DataContext设置为self才能使Command Binding工作:

 public MainWindow() { InitializeComponents(); DataContext = this; SomeCommand = MyCommand() => OnAction(); } 

或者您必须将Binding更新为