使用IsEnabled =“ False”的WPF禁用按钮在代码中不起作用

时间:2019-05-23 13:03:16

标签: wpf powershell

我正在这里进行GUI项目,我的问题与禁用“提交”按钮有关。 GUI是向导,在某些页面中,将有多个“提交按钮”。

每当用户单击任何“提交”按钮时,都将进行一些验证,如果一切正常,则将启用下一个“输入”框(因为XAML默认情况下将其禁用)。当用户更改第二个输入框的文本时,将为其分配给该输入框的“提交”按钮启用。

为了确保用户不会做错什么,我想在用户更改第二个输入框的文本时禁用第一个“提交按钮”。

这时,无论用户何时更改输入框的文本,都可以正常启用相应的提交按钮,而不会出现问题,但不会禁用上一个提交按钮。

下面是其中一个页面的PIC,您可以看到第二个提交按钮已启用,但第一个未禁用。

enter image description here

我的代码如下:

       #    Main Page Input Boxes.  
            #   Enable Submit Buttons.
        $Global:GuiHash.WizardMainPageInputBox1.Add_TextChanged({$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled="True"})
        $Global:GuiHash.WizardMainPageInputBox2.Add_TextChanged({$Global:GuiHash.WizardMainPageSubmitButton2.IsEnabled="True"})
        $Global:GuiHash.WizardMainPageInputBox3.Add_TextChanged({$Global:GuiHash.WizardMainPageSubmitButton3.IsEnabled="True"})
            #   Clear default text from the box and disable priviouse submit buttons.
        $Global:GuiHash.WizardMainPageInputBox1.Add_GotFocus({If ($Global:GuiHash.WizardMainPageInputBox1.Text -eq "NSX Manager FQDN:") {$Global:GuiHash.WizardMainPageInputBox1.Dispatcher.Invoke([action]{$Global:GuiHash.WizardMainPageInputBox1.Text = ""})}})
        $Global:GuiHash.WizardMainPageInputBox2.Add_GotFocus({
            Wait-Debugger
            If ($Global:GuiHash.WizardMainPageInputBox2.Text -eq "NSX Manager Admin Password:") {$Global:GuiHash.WizardMainPageInputBox2.Dispatcher.Invoke([action]{$Global:GuiHash.WizardMainPageInputBox2.Text = ""})}
            $Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled="False"
        })
        $Global:GuiHash.WizardMainPageInputBox3.Add_GotFocus({If ($Global:GuiHash.WizardMainPageInputBox3.Text -eq "Output folder path:") {$Global:GuiHash.WizardMainPageInputBox3.Dispatcher.Invoke([action]{$Global:GuiHash.WizardMainPageInputBox3.Text = ""}); $Global:GuiHash.WizardMainPageSubmitButton2.IsEnabled= "False"}})

当我尝试使用debug-runspace进行调试时,我没有在应禁用提交按钮的代码行上看到任何错误。

禁用提交按钮的代码行:

$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled="False"

调试运行空间:

PS C:\Users\Administrator> Debug-Runspace Runspace11
Debugging Runspace: Runspace11
To end the debugging session type the 'Detach' command at the debugger prompt, or type 'Ctrl+C' otherwise.

Stopped at: If ($Global:GuiHash.WizardMainPageInputBox2.Text -eq "NSX Manager Admin Password:") {$Global:GuiHash.WizardMainPageInputBox2.Dispatcher.Invoke([action]{$Global:GuiHash.WizardMainPageInputBox2.Text = ""})}
[DBG]: [Process:7116]: [Runspace11]: PS C:\Users\Administrator>> 
Stopped at: If ($Global:GuiHash.WizardMainPageInputBox2.Text -eq "NSX Manager Admin Password:") {$Global:GuiHash.WizardMainPageInputBox2.Dispatcher.Invoke([action]{$Global:GuiHash.WizardMainPageInputBox2.Text = ""})}
[DBG]: [Process:7116]: [Runspace11]: PS C:\Users\Administrator>> 
Stopped at: $Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled="False"
[DBG]: [Process:7116]: [Runspace11]: PS C:\Users\Administrator>> 
Stopped at: })
[DBG]: [Process:7116]: [Runspace11]: PS C:\Users\Administrator>> 

1 个答案:

答案 0 :(得分:0)

感谢Ed Plunkett,根据他的评论,我需要使用错误语句$ False而不是字符串。将我的代码更改为以下内容就像魅力一样。谢谢爱德。

$Global:GuiHash.WizardMainPageSubmitButton1.IsEnabled=$False