0

我有一个组合框,它通过转换器绑定到双打集合,该转换器仅用于从关联属性的名称中定位集合。组合框位于属性网格编辑器的 DataTemplate 中。问题是组合框不显示当前系统文化中的值(即使用“,”作为小数分隔符,而不是“。”)。属性网格中的所有其他属性都正确显示(例如在文本框中)。

DataTemplate 看起来像这样,而 ListComboBoxValuesConverter 只返回一个双精度集合。

<ComboBox 
   ItemsSource="{Binding Converter={StaticResource ListComboBoxValuesConverter},
        RelativeSource={RelativeSource AncestorType={x:Type propgrid:IPropertyDataAccessor}}}"
   Text="{Binding Path=Value,
        RelativeSource={RelativeSource AncestorType={x:Type propgrid:IPropertyDataAccessor}}, 
        Mode=TwoWay,
        ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True}">
</ComboBox>

谢谢

编辑:

我想出的解决方案是为组合框设置项目模板并使用转换器将值作为格式正确的字符串返回。感觉这应该是不必要的,但你去吧!

<ComboBox.ItemTemplate>
   <DataTemplate>
       <Label Content="{Binding Converter={StaticResource FloatValueCultureConverter}, ConverterCulture={x:Static gl:CultureInfo.CurrentCulture}}"/>
   </DataTemplate>
</ComboBox.ItemTemplate>
4

2 回答 2

0

也许问题可能出在转换器上,尝试使用作为参数传递给转换器的 CultureInfo 返回 toString(从 double 到 string 的转换器):

return someDouble.ToString(culture);
于 2012-10-05T15:11:38.637 回答
0

您需要将 ComboBox 或任何包含元素上的 Language 属性设置为当前区域性的 ietf-Tag。如果要尊重用户区域设置的自定义,则必须将绑定的 ConverterCulture 设置为 currentuiculture。您可以在 WPF 中的本地化值格式中找到有关此主题的详细信息。

于 2012-10-05T16:43:37.870 回答