0

関連するプロパティの名前からコレクションを見つけるために使用されるコンバーターを介して double のコレクションにバインドされているコンボ ボックスがあります。コンボ ボックスは、プロパティ グリッド エディターの DataTemplate にあります。問題は、コンボ ボックスが現在のシステム カルチャの値を表示しないことです (つまり、'.' ではなく ',' を小数点記号として使用します)。プロパティ グリッドの他のすべてのプロパティは正しく表示されます (テキスト ボックスなど)。

DataTemplate は次のようになり、ListComboBoxValuesConverter は double のコレクションを返すだけです。

<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

ComboBoxまたはそれを含む要素のLanguage属性を、現在のカルチャのietf-Tagに設定する必要があります。ユーザーのロケールのカスタマイズを尊重したい場合は、BindingのConverterCultureをcurrentuicultureに設定する必要があります。このトピックの詳細については、WPFのローカライズされた値の書式設定を参照してください。

于 2012-10-05T16:43:37.870 に答える
0

問題はコンバーターにある可能性があります。パラメーターとしてコンバーターに渡された CultureInfo を使用して toString を返してみてください (double から string へのコンバーター)。

return someDouble.ToString(culture);
于 2012-10-05T15:11:38.637 に答える