WPF ComboBox文化未应用于值

时间:2012-10-05 14:34:40

标签: c# wpf combobox

我有一个组合框,它通过转换器绑定到一个双打集合,该转换器仅用于从关联属性的名称中查找集合。组合框位于Property Grid编辑器的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>

2 个答案:

答案 0 :(得分:0)

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

return someDouble.ToString(culture);

答案 1 :(得分:0)

您需要将ComboBox或任何包含元素的Language属性设置为当前区域性的ietf-Tag。如果要尊重用户区域设置的自定义,则必须将Binding的ConverterCulture设置为currentuiculture。您可以在Localized Value Formatting in WPF

中找到有关此主题的详细信息