[英]How to make wpf combo box pull a special property
我想使用组合框输入一个普通的整数值。
在我的应用程序中,某些数值具有特殊含义,但必须能够输入任何数值(键入)。
因此,组合框必须显示一个编辑字段,右侧有一个下拉箭头。
如果单击下拉箭头,则下拉列表必须显示具有特殊含义的特殊数值的解释 (字符串)列表(例如"103 - Wait for next turn"
)。
如果用户单击下拉列表中的条目(而不是直接键入相应的值),则必须将相应的数值传送到编辑字段。
我尝试过以下方法:
IsEditable
属性设置为true ItemsSource
属性绑定到一个对象集合,这些对象具有一个数字属性(名为"Value"
)和一个字符串属性(名为"Explanation"
)。 DisplayMemberPath
属性设置为"Explanation"
(上面的字符串属性的名称) 有了这个,我可以自由输入我喜欢的任何数字,并在下拉列表中正确显示每个特殊数字的字符串说明。 这正是我想要的。
但是,当我从下拉列表中选择一个解释时,它是转移到编辑字段的解释字符串 ,而不是相应的数值。
问题:当我从下拉列表中单击某个项目时,如何使组合框传输数字属性( "Value"
)而不是解释文本?
使用数据模板在drowp-down中显示说明文本。
要在文本编辑字段中显示值,请将ComboBox的附加属性TextSearch.TextPath
设置为“特殊值”类型中value属性的名称。
如果ComboBox在输入数字时不应自动完成可能的特殊值,请将其IsTextSearchEnabled
属性设置为false 。 (请注意,如果您碰巧在编辑字段中输入一个特殊值,这也会禁用下拉菜单中的特殊值。)
因此,ComboBox的定义应该类似于:
<ComboBox ItemsSource="{Binding ...}"
IsEditable="True"
TextSearch.TextPath="Value"
IsTextSearchEnabled="False">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Explanation}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.