我有一个组合框,它通过转换器绑定到一个双打集合,该转换器仅用于从关联属性的名称中查找集合。组合框位于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>
答案 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。
中找到有关此主题的详细信息