WPF中使用IsEnabled="False"禁用按钮在代码中不起作用。
WPF中使用IsEnabled="False"禁用按钮在代码中不起作用。
我正在处理一个GUI项目,我的问题与禁用提交按钮有关。GUI是一个向导,在某些页面上,可能会有多个提交按钮。\n无论用户点击哪个提交按钮,都会进行一些验证,如果一切顺利,下一个输入框将被启用(因为在XAML中默认禁用)。当用户更改第二个输入框的文本时,分配给该输入框的提交按钮将被启用。\n为了确保用户不会做错事,我希望在用户更改第二个输入框的文本时禁用第一个提交按钮。\n在这一点上,无论用户更改哪个输入框的文本,相应的提交按钮都能够正常启用,但是之前的提交按钮却没有被禁用。\n以下是页面的图片,您可以看到第二个提交按钮被启用,但第一个没有被禁用。\n我的代码如下:\n#主页面输入框。\n#启用提交按钮。\n$Global:GuiHash.WizardMainPageInputBox1.Add_TextChanged({$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled =“True”})\n$Global:GuiHash.WizardMainPageInputBox2.Add_TextChanged({$Global:GuiHash.WizardMainPageSubmitButton2.IsEnabled =“True”})\n$Global:GuiHash.WizardMainPageInputBox3.Add_TextChanged({$Global:GuiHash.WizardMainPageSubmitButton3.IsEnabled =“True”})\n#清除框中的默认文本并禁用之前的提交按钮。\n$Global:GuiHash.WizardMainPageInputBox1.Add_GotFocus({如果($Global:GuiHash.WizardMainPageInputBox1.Text -eq “NSX Manager FQDN:“){ $Global:GuiHash.WizardMainPageInputBox1.Dispatcher.Invoke([action] {$Global:GuiHash.WizardMainPageInputBox1.Text =“”})} })\n$Global:GuiHash.WizardMainPageInputBox2.Add_GotFocus({\nWait-Debugger\n如果($Global:GuiHash.WizardMainPageInputBox2.Text -eq “NSX Manager Admin Password:“){ $Global:GuiHash.WizardMainPageInputBox2.Dispatcher.Invoke([action] {$Global:GuiHash.WizardMainPageInputBox2.Text =“”})}\n$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled =“False”})\n$Global:GuiHash.WizardMainPageInputBox3.Add_GotFocus({如果($Global:GuiHash.WizardMainPageInputBox3.Text -eq “Output folder path:”){$Global:GuiHash.WizardMainPageInputBox3.Dispatcher.Invoke([action] {$Global:GuiHash.WizardMainPageInputBox3.Text =“”}); $Global:GuiHash.WizardMainPageSubmitButton2.IsEnabled =“False”}})\n当我尝试使用debug-runspace进行调试时,在应该禁用提交按钮的代码行上没有任何错误。\n禁用提交按钮的代码行:\n$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled =“False”\n调试Runspaces:\nPS C:\\ Users \\ Administrator> Debug-Runspace Runspace11\nDebugging Runspace:Runspace11\n要结束调试会话,请在调试器提示符处键入“Detach”命令,或按“Ctrl + C”键。\n停在:如果($Global:GuiHash.WizardMainPageInputBox2.Text -eq “NSX Manager Admin Password:”){ $Global:GuiHash.WizardMainPageInputBox2.Dispatcher.Invoke([action] {$Global:GuiHash.WizardMainPageInputBox2.Text =“”})}\n[DBG]:[Process:7116]:[Runspace11]:PS C:\\ Users \\ Administrator>>\n停在:如果($Global:GuiHash.WizardMainPageInputBox2.Text -eq “NSX Manager Admin Password:”){ $Global:GuiHash.WizardMainPageInputBox2.Dispatcher.Invoke([action] {$Global:GuiHash.WizardMainPageInputBox2.Text =“”})}\n[DBG]:[Process:7116]:[Runspace11]:PS C:\\ Users \\ Administrator>>\n停在:$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled =“False”\n[DBG]:[Process:7116]:[Runspace11]:PS C:\\ Users \\ Administrator>>\n停在:}\n[DBG]:[Process:7116]:[Runspace11]:PS C:\\ Users \\ Administrator>>
WPF中使用IsEnabled="False"禁用按钮的方法在代码中无效
在WPF中,我们经常需要根据特定的条件来禁用按钮。通常,我们可以使用IsEnabled="False"属性来实现这一目的。然而,有时候我们会发现,尽管在代码中设置了IsEnabled="False",按钮仍然可以被点击。本文将介绍出现这个问题的原因,并提供解决方法。
问题原因:
在这个问题中,用户遇到了一个奇怪的现象:尽管在代码中使用了IsEnabled="False"来禁用按钮,但按钮仍然可以被点击。经过研究,用户发现了问题的原因。
解决方法:
根据其他用户Ed Plunkett的评论,用户意识到应该使用false关键字$False来代替字符串。用户将代码修改为以下形式,并成功地解决了问题。
$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled=$False
这样,按钮将被正确地禁用,并且无法被点击。
感谢Ed Plunkett的评论和指导,用户成功解决了WPF中使用IsEnabled="False"禁用按钮无效的问题。通过使用$False关键字替代字符串,用户找到了正确的解决方法。希望本文能够帮助到其他遇到类似问题的开发者。