这个问题和听起来一样简单。假设button.IsEnabled == false,当我执行button.IsEnabled = true;该按钮仍然是假的! (通过使用Visual Studio'watch'功能在调试器中设置它之后立即查看该值)不能在C#中设置button.IsEnabled = true WPF
显然,这种情况并不像通常的代码那样常见。但是系统中显然存在一些阻碍设置的东西,我正在寻找关于它可能的想法。起初我以为是因为这个按钮被挂在了一个ICommand中,显然它控制着IsEnabled设置本身。所以我取消了ICommand。这适用于不同的按钮,但此按钮没有通过“命令= {绑定路径...}”挂接到ICommand。其实这个按钮在C#创建为简单:在自定义的控件工具栏存在
Button button = new Button();
button.Content = "Save Record";
button.IsTabStop = false;
这些按钮和发生在的PropertyChanged事件处理程序我写这是试图建立自己的价值的代码。奇怪的是,相同的代码最初成功地将按钮设置为false,并且工作正常!什么可能会禁止设置IsEnabled = true?
几个小时后:
呸,新手的错误(35年后,在IT)。进一步在代码中的行是:
button.Command = new myCommand(...);
所以,事实上,按钮是通过命令接口挂钩。我把它拿出来,并用按钮单击事件处理程序替换它,问题就解决了。由于我无法在Google中找到此问题,所以经过无数次搜索后,让我重申问题以防其他人遇到问题:当您将ICommand与UIElement挂钩时,例如,按钮,menuitem等.Net接管IsEnabled属性。您不能再以编程方式设置属性。