【发布时间】:2013-05-16 10:35:58
【问题描述】:
(首先,我简化了示例以便您理解。)
我想要一个以英寸为单位显示值的可编辑组合框。 原始(源)值是以像素为单位的值 (DIP),因为这是应用程序内部工作的单位。用户不应该看到以像素为单位的值,而是以英寸(UI 的测量单位)为单位的值。我决定必须使用转换器将像素转换为英寸,反之亦然。
ComboBox 项目也应使用“{0} in”进行格式化。
应该是这样的
[ 4 in |v]
[ 1 in ]
[ 2 in ]
[ 3 in ]
[ 4 in ]
但是,请记住,在内部它应该在像素中工作!并且是可编辑的。这是作品部分。我完全无法做到这一点。
到目前为止我有这个:
<ComboBox IsEditable="True"
ItemStringFormat="'{}{0} in}'"
Text="{Binding RelativeSource={RelativeSource Self}, Path=SelectedValue, Mode=TwoWay, Converter={StaticResource MyPixelToInchesConverter}, StringFormat='{}{0} in}'}">
<system:Double>1</system:Double>
<system:Double>2</system:Double>
<system:Double>3</system:Double>
</ComboBox>
问题?当您选择一个项目时,它没有被格式化。而且当你在 ComboBox 的可编辑区域写一个数字时,它也没有被格式化。
那么,即使用户输入了一个不存在的值,ComboBox 格式化项目的最佳方式是什么?
谢谢!
【问题讨论】:
标签: combobox units-of-measurement string-formatting