gpt4 book ai didi

c# - WPF 代码隐藏等效项

转载 作者:行者123 更新时间:2023-11-30 15:06:29 26 4
gpt4 key购买 nike

在开发的时候,我更喜欢尝试和理解,而不是“只做这个”。特别是对于 WPF,我喜欢从 GUI (xaml) 和代码隐藏两个方面了解绑定(bind)的两个方面。话虽如此,我想知道以下代码的等效代码是什么。

我有一个 ViewModel,其中包含一些预定义的“ICommand”实例,例如添加、编辑、保存、取消、退出等等——它们按预期工作。现在,查看上面有一个按钮的 View (窗口)的绑定(bind),我将它绑定(bind)到命令,例如。

<Button Command="{Binding ExitCommand}" Content="Exit" ... />

这正确地完成了我期望的允许表单退出的操作(并执行我正在玩的任何其他操作)。

代码隐藏看起来像什么。我知道 IsEnabled 或 IsVisible 等属性绑定(bind)到依赖对象/属性,但我不了解绑定(bind)到命令执行时的相关性。谢谢。

最佳答案

您创建命令绑定(bind)的方式与在代码隐藏中创建任何其他绑定(bind)的方式相同。

例如,

Binding b = new Binding();
b.Source = myViewModel;
b.Path = new PropertyPath("ExitCommand");
MyButton.SetBinding(Button.CommandProperty, b);

命令绑定(bind)期望绑定(bind)到 ICommand 类型的对象。当它们被执行时,例如在单击按钮时,它们首先调用 ICommand.CanExecute(),如果是,则它们调用 ICommand.Execute()。如果设置了 CommandParameter 属性,则在评估 CanExecuteExecute

时使用该属性

对于具有命令绑定(bind)的 WPF 按钮,IsEnabled 属性会自动绑定(bind)到 ICommand.CanExecute 的结果。 CanExecute 方法在第一次加载按钮时运行一次,并在命令绑定(bind)更改时再次运行。

如果您希望它更频繁地更新,例如当 CommandParameter 更改时,您需要连接一些额外的东西以在 CommandParameter 更改时更新绑定(bind)。我看到的大多数 RelayCommands 都内置了此功能,例如 MVVM Light 的 RelayCommand,尽管 Microsoft PRISM 的 DelegateCommand 等其他命令没有此行为默认情况下。

关于c# - WPF 代码隐藏等效项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7772560/

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