У меня возникла проблема с настройкой включенного состояния кнопки в диалоговом окне. Соответствующая кнопка определяется как:
<Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUINext)">
<Condition Action="disable">Validated = 0</Condition>
<Condition Action="enable"><![CDATA[Validated <> 0]]></Condition>
<Publish Event="EndDialog" Value="Return">1</Publish>
</Control>
Свойство Validated начинается с начального значения 0, и, как ожидается, следующая кнопка отключается.
<Property Id="Validated" Value="0"/>
Само свойство изменяется с помощью пользовательского действия на другой кнопке.
<Control Id="PerformValidation" Type="PushButton" X="225" Y="75" Width="50" Height="20" Text="Validate">
<Publish Event="DoAction" Value="ValidateDB">1</Publish>
</Control>
С урезанной версией пользовательского действия, например:
[CustomAction]
public static ActionResult ValidateDatabase(Session session)
{
session.Log("Begin ValidateDatabase");
session["Validated"] = "1";
return ActionResult.Success;
}
Проблема, с которой я сталкиваюсь, заключается в том, что после того, как пользовательское действие запустилось, кнопка "Далее" не активируется повторно. Я могу подтвердить, что CA запускается, и свойство успешно установлено. Пользовательский интерфейс обновится, если я сделаю какое-то другое действие, которое заставляет его обновляться, например. верните страницу, затем перейдите на эту страницу еще раз, и кнопка "Далее" будет включена.
Любые идеи по обновлению состояния кнопок после пользовательского действия?