2010-07-15 12 views
7

Tôi đã tạo một trang hộp thoại tùy chỉnh trong wix và nó có một hộp văn bản. Tôi muốn vô hiệu hóa nút tiếp theo của trình cài đặt nếu hộp văn bản trống kết thúc cho phép nếu người dùng đã nhập một giá trị. Mã sau hoạt động một phần. Nó không vô hiệu hóa nút tiếp theo nhưng nó không điều hướng đến trang tiếp theo trừ khi bạn điền vào giá trị. Vấn đề tôi gặp phải là trạng thái của nút tiếp theo không được cập nhật trong khi bạn đang gõ một giá trị trong hộp soạn thảo. Nếu tôi xóa giá trị khỏi hộp văn bản chỉnh sửa và sau đó nhấp lại vào màn hình trước đó và sau đó, nút tiếp theo sẽ bị tắt.Bật hoặc tắt nút tiếp theo dựa trên giá trị điều khiển văn bản trực tiếp trong 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> 

Trả lời

3

Đây là cách tôi đã làm.

<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

Bạn có muốn trả lời câu hỏi Wix khác không? http://stackoverflow.com/questions/19355537/wix-setting-install-folder-correctly/ –

7

Tắt và bật nút "Tiếp theo" gần như không thể thực hiện được trong WIX. Câu trả lời từ @ Wjdavis5 đã tắt nút "Tiếp theo" cho tôi nhưng nút sẽ chỉ bật nếu người dùng nhấp vào một hộp văn bản khác. Đó là khó hiểu.

Mã sau đây được dựa trên this answer. Nó cho thấy một hộp nhập văn bản duy nhất, khi người dùng nhấp vào "Tiếp theo", nó hiển thị hộp thoại báo lỗi hoặc tiến tới màn hình cài đặt.

<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

Ý tưởng hay, tôi đang sử dụng giải pháp này để xác thực đầu vào bằng kết quả từ hành động tùy chỉnh. –