2015-12-14 202 views
2

我有一个自定义的Wix对话框,并且在该对话框上是一个组合框控件。
组合框设置用来创建对话框如下:当选择一个选项时,显示组合框的值而不是文本

<Control Type="ComboBox" Id="OptionType" Width="150" Height="13" X="41" Y="68" Property="SELECTEDOPTION"> 
    <ComboBox Property="SELECTEDOPTION"> 
     <ListItem Text="None" Value="None" /> 
     <ListItem Text="Option 1" Value="Option_1"/> 
     <ListItem Text="Option 2" Value="Option_2"/> 
     <ListItem Text="Option 3" Value="Option_3"/> 
    </ComboBox> 
</Control> 

当在显示组合框的安装,我可以看到在下拉列表中,例如正确的文本“选项2”,但是当我选择该项目并且下拉菜单崩溃并且所选选项放在可见字段中时,我看到“选项2”显示,即显示的文本是来自Value属性,而不是Text属性。下面的截图应该说明我在说什么。

How the drop down looks before and after selection.

显然我错过了我的控制设置的东西,是组合框这份工作错误的工具,或者是有上控制或ComboBox,我应该设置属性?
我已经看过Wix的文档,但没有什么是跳出来对我。

回答

3

我找到了解决方案。
回到Wix documentation for the Control element,我遇到了一个名为组合列表没有说明。所以我想我会试一试,看看发生了什么。

这是我得到:

Drop down rendering with ComboList set to yes

与原来相比:

Drop down rendering with no ComboList setting

所以它改变了下降,由一跌,你可以输入,到正规的一个。
并与此同时,它也给了我什么我需要 - 现在当我选择“选项2”,我得到“选项2”
它仍然正常工作,检索SELECTEDOPTION设置从注册表以及以前的值,因为当然,列表中的每个项目的值没有改变。

我所做的只是属性添加ComboList =“是”到给我的控制元素:

<Control Type="ComboBox" Id="OptionType" Width="150" Height="13" X="41" Y="68" Property="SELECTEDOPTION" ComboList="yes" Sorted="yes"> 

无关原来的问题,但任何人谁最终看着这可能是有用的 - 我还添加了Sorted =“是”属性,因为那样会按照我将它们添加到列表中的顺序对下拉列表元素进行排序。如果将它排除在外,则按字母顺序排列项目。

0

你可以在这里看到http://wixtoolset.org/documentation/manual/v3/xsd/wix/listitem.html text属性是为了本地化的目的,如果不使用它将是value属性的值。 “

”要分配给该项目的可本地化的可见文本,如果未指定,则默认为值属性的值。

我建议只使用value属性并删除文本属性。

+0

就是这样,但这并不能解决我的问题。我的值是从文件名生成的,并将空格放入它们会导致头痛。此外,我应该能够使用本地化的文本,并让它看起来像我想要的样子,因为这肯定是text属性的全部要点。 – Nanhydrin

相关问题