2010-07-15 3 views
7

Ich erstellte eine benutzerdefinierte Dialogseite in Wix und es hat ein Textfeld. Ich möchte die nächste Schaltfläche des Installationsprogramms deaktivieren, wenn das Textfeld leer ist, und es aktivieren, wenn der Benutzer einen Wert eingegeben hat. Der folgende Code funktioniert teilweise. Es deaktiviert nicht die nächste Schaltfläche, aber es navigiert nicht zur nächsten Seite, es sei denn, Sie füllen den Wert. Das Problem, das ich habe, ist, dass der Status der nächsten Schaltfläche nicht aktualisiert wird, während Sie einen Wert in das Bearbeitungsfeld eingeben. Wenn ich den Wert aus dem Textfeld "Bearbeiten" entferne und dann auf den vorherigen Bildschirm und dann auf "Weiter" klicke, wird die nächste Schaltfläche deaktiviert.Aktivieren oder deaktivieren Sie die nächste Schaltfläche basierend auf einem Textsteuerwert in Wix?

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
<Fragment> 
    <UI> 
     <Dialog Id="MyCustomDialog" Width="370" Height="270" Title="Custom Dialog Options"> 
     <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next"> 
      <Condition Action="disable">USERNAME1 = ""</Condition> 
      <Condition Action="enable">NOT(USERNAME1 = "")</Condition> 
      <Publish Event="NewDialog" Value="VerifyReadyDlg">NOT(USERNAME1 = "")</Publish> 
     </Control> 
     <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="Back"> 
      <Publish Event="NewDialog" Value="CustomizeDlg">1</Publish> 
     </Control> 
     <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel"> 
      <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> 
     </Control> 

     <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes" Text="Please type the value" /> 

     <Control Id="UserNameText" Type="Text" X="20" Y="60" Width="290" Height="13" NoPrefix="yes" Text="Please type the username" /> 
     <Control Id="UserNameEdit" Type="Edit" X="20" Y="72" Width="290" Height="18" Multiline="no" Property="USERNAME1"/> 

     </Dialog> 
    </UI> 
</Fragment> 
</Wix> 

Antwort

3

Hier ist, wie ich es gemacht habe.

<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&amp;Next"> 
     <Condition Action="enable"><![CDATA[InDBCONNECTION_STRING_VALID = "1"]]></Condition> 
     <Condition Action="disable"><![CDATA[InDBCONNECTION_STRING_VALID = "0"]]></Condition> 
</Control> 
+0

Möchten Sie versuchen, eine andere Wix-Frage zu beantworten? http://stackoverflow.com/questions/19355537/wix-setting-install-folder-correctly/ –

7

Das Deaktivieren und Aktivieren der Schaltfläche "Weiter" ist in WIX fast unmöglich. Die Antwort von @Wjdavis5 hat die Schaltfläche "Weiter" für mich deaktiviert, aber die Schaltfläche wird nur aktiviert, wenn der Benutzer in ein anderes Textfeld klickt. Das ist verwirrend.

Der folgende Code basiert auf this answer. Es zeigt ein einzelnes Texteingabefeld, wenn der Benutzer auf "Weiter" klickt, zeigt es entweder einen Fehlerdialog an oder geht zum Installationsbildschirm über.

<Dialog Id="UserRegistrationDialog" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes"> 
    <Control Id="UserIdEdit" Type="Edit" X="45" Y="85" Width="220" Height="18" Property="UserID" Text="{80}" /> 

    <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="Next" > 
     <Publish Event="NewDialog" Value="VerifyReadyDlg">2</Publish> 
     <Publish Event="SpawnDialog" Value="UserIdError"><![CDATA[UserID = ""]]></Publish> 
    </Control> 
</Dialog> 

<Dialog Id="UserIdError" Width="260" Height="85" NoMinimize="no" Title="[ProductName]"> 
    <Control Id="UserIdErrorDesc" Type="Text" Width="194" Height="30" X="48" Y="15" Text="Please enter a User ID." /> 
    <Control Id="UserIdErrorOk" Type="PushButton" X="97" Y="57" Width="56" Height="17" Text="Ok"> 
     <Publish Event="EndDialog" Value="Return">1</Publish> 
    </Control> 
</Dialog> 
+0

Gute Idee, verwende ich diese Problemumgehung, um die Eingabe mit Ergebnis von benutzerdefinierten Aktion zu validieren. –

Verwandte Themen