gpt4 book ai didi

c# - 如何使用其 CanExecute 方法启用按钮

转载 作者:可可西里 更新时间:2023-11-01 08:08:51 26 4
gpt4 key购买 nike

我正在使用 MVVM 在 WPF 中开发应用程序,但我被 ICommand 对象困住了。

我有一个包含一些按钮的窗口,因此,我将它们绑定(bind)到 XAML 中各自的 ICommand,如下所示:

<Button Command="{Binding DoSomethingCommand}" Content="Do Something" />

然后,在我的 View 模型类中,我编写了以下内容:

public class MyViewModel : ObservableObject
{

private bool isDoSomethingButtonEnabled = false;
....
public ICommand DoSomethingCommand
{
get;
private set;
}
....
....
public MyViewModel()
{
DoSomethingCommand = new DelegateCommand<String>(this.OnDoSomething, this.CanDoSomething);
}

private void OnDoSomething(String arg)
{

}

private bool CanDoSomething(String arg)
{
return isDoSomethingButtonEnabled;
}
....
}

因此,由于我需要在窗口第一次打开时不启用我的按钮,所以我将变量 isDoSomethingButtonEnabled 设置为 false。它有效,按钮在开始时被禁用,但我的问题是,当我在运行时将变量 isDoSomethingButtonEnabled 更改为 true 时,我的按钮仍然被禁用。

在将变量 isDoSomethingButtonEnabled 更改为 true 后,我什至做了一些测试,打印了 DoSomethingCommand.CanExecute() 的结果,它显示“真的”!

那么,我应该怎么做才能启用我的按钮??

提前致谢

最佳答案

有一个名为 CanExecuteChanged 的事件在 ICommand 界面上:

Occurs when changes occur that affect whether or not the command should execute.

带 Prism DelegateCommand您可以使用 RaiseCanExecuteChanged 方法引发此事件:

public void SomeMethod()
{
//do some work
isDoSomethingButtonEnabled = true;
DoSomethingCommand.RaiseCanExecuteChanged();
}

关于c# - 如何使用其 CanExecute 方法启用按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10921881/

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