(首先,我简化了示例以供您理解。)
我想要一个以英寸为单位显示值的可编辑组合框。原始(源)值是以像素(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 格式化项目的最佳方式是什么?
谢谢!