gpt4 book ai didi

c# - 在 WPF 中创建键绑定(bind)

转载 作者:IT王子 更新时间:2023-10-29 04:31:58 25 4
gpt4 key购买 nike

我需要为窗口创建输入绑定(bind)。

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 永远不会被调用。

最佳答案

对于您的情况,使用 MVVM 模式的最佳方式

XAML:

<Window>
<Window.InputBindings>
<KeyBinding Command="{Binding SomeCommand}" Key="F5"/>
</Window.InputBindings>
</Window>

代码隐藏:

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

在你的 View 模型中:

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

然后您将需要ICommand 的实现。这个简单有用的类(class)。

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;
}

关于c# - 在 WPF 中创建键绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19697106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com