我想使用组合框输入纯整数值。
在我的应用程序中,某些数值具有特殊含义,但是必须能够输入(键入)任何数值。
因此,组合框必须在右侧显示一个带有下拉箭头的编辑字段。
如果单击下拉箭头,则下拉菜单必须显示具有特殊含义的那些特殊数值的解释(字符串)列表(例如"103 - Wait for next turn"
)
如果用户单击下拉列表中的条目(而不是直接键入相应的值),则必须将相应的数值传送到编辑字段。
我尝试了以下方法:
IsEditable
属性设置为true ItemsSource
属性绑定到同时具有数字属性(名为"Value"
)和字符串属性(名为"Explanation"
)的对象的集合。 DisplayMemberPath
属性设置为"Explanation"
(上面的字符串属性的名称)有了这个,我可以自由地键入任何我喜欢的数字,并且每个特殊数字的字符串说明会正确显示在下拉列表中。这正是我想要的。
但是,当我从下拉列表中选择一种解释时,是解释字符串被传送到编辑字段,而 not 则是相应的数值
问题:当我从下拉列表中单击某项时,如何使组合框传递数字属性("Value"
)而不是说明文本?
答案 0 :(得分:0)
使用数据模板在下拉菜单中显示说明文字。
要在文本编辑字段中显示值,请将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>