【发布时间】:2011-12-02 04:28:57
【问题描述】:
我正在尝试编写一个自定义 WiX 对话框,作为其工作流程的一部分,该对话框会显示一个错误图像以响应某些条件。但是,WiX 似乎忽略了我的尺寸并以感觉合适的方式显示。这是我的代码:
<Binary Id="WixUI_FailureImg" SourceFile="$(sys.SOURCEFILEDIR)..\Resources\Failure.ico" />
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="206" Width="16" Height="16" Text="WixUI_FailureImg">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
我在下面包含了结果对话框的 sn-p,背景是原始图像(16x16 .ico)。如您所见,图像已向上缩放,并且图像周围没有透明度。我尝试过 8 位和 24 位位图以及图标,但它们都产生相同的结果。有什么我做的明显错误的事情吗?
更新:
如果您想知道动态图像的工作原理,请查看相关部分:
<Control Id="TestResult_Success" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_SuccessImg">
<Condition Action="hide">LOGON_VALID = "0"</Condition>
<Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestPrompt_Success" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionValid)">
<Condition Action="hide">LOGON_VALID = "0"</Condition>
<Condition Action="show">LOGON_VALID = "1"</Condition>
</Control>
<Control Id="TestResult_Failure" Type="Icon" IconSize="16" X="15" Y="210" Width="12" Height="12" Text="WixUI_FailureImg">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
<Control Id="TestPrompt_Failure" Type="Text" X="35" Y="210" Width="322" Height="10" Text="!(loc.SqlSelectDlgConnectionInvalid)">
<Condition Action="hide">LOGON_VALID = "1"</Condition>
<Condition Action="show">LOGON_VALID = "0"</Condition>
</Control>
从截图可以猜到,该页面与建立SQL连接有关;我有一个自定义操作,它根据用户的输入创建一个连接字符串,并尝试对其进行验证。如果它是有效的 (LOGON_VALID = "1"),我会得到一个勾号图像和一些文本来说明一切都很好,否则我会得到一个警告图标和一些文本来警告用户。当然,Next 按钮也是受这个值控制的。
【问题讨论】:
-
提出一个单独的问题..很想知道..您是否在动态更改图像?我的意思是图像会根据条件出现?
-
是的;所以有一个 TestResult_Success 控件,如果 LOGON_VALID = 1 则显示绿色勾号,如果 LOGON_VALID = 0 则隐藏它。图像大小相同,位置相同。
-
能否分享一些动态更新图片的代码?
-
我已更新原始问题以显示我的解决方案。不聪明,但它有效:-)
-
非常感谢...我尝试了很多但从未得到...我错过了我从您的代码中获得的
'Text="WixUI_FailureImg"'。 :)