floatプロパティにTextBox
のText
をバインドすると、表示されたテキストはシステム小数点(ドットまたはコンマ)に従いません。代わりに、常にドット( '。')が表示されます。しかし、私がMessageBox
の値を(ToString()を使用して)表示すると、正しいSystem Decimalが使用されます。TextBoxはシステム小数点(ドットまたはコンマ)を受け入れません
XAML
<StackPanel>
<TextBox Name="floatTextBox"
Text="{Binding FloatValue}"
Width="75"
Height="23"
HorizontalAlignment="Left"/>
<Button Name="displayValueButton"
Content="Display value"
Width="75"
Height="23"
HorizontalAlignment="Left"
Click="displayValueButton_Click"/>
</StackPanel>
コード今のよう
public MainWindow()
{
InitializeComponent();
FloatValue = 1.234f;
this.DataContext = this;
}
public float FloatValue
{
get;
set;
}
private void displayValueButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(FloatValue.ToString());
}
背後に、私は(システム小数点をドットに置き換えられコンバータでこれを解決してきましたこれは必要なのはなぜですか?これは設計であり、これを解決する簡単な方法はありますか?
SystemDecimalConverter(場合には他の誰かが同じ問題を抱えている)
public class SystemDecimalConverter : IValueConverter
{
private char m_systemDecimal = '#';
public SystemDecimalConverter()
{
m_systemDecimal = GetSystemDecimal();
}
object IValueConverter.Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.ToString().Replace('.', m_systemDecimal);
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value.ToString().Replace(m_systemDecimal, '.');
}
public static char GetSystemDecimal()
{
return string.Format("{0}", 1.1f)[1];
}
}
+1、これは素晴らしいことです!ありがとう!あなたが今すぐ提供したリンクを通過する時間がありませんが、私は時間がかかるとすぐにそれらをチェックします。だから私はあなたの答えを受け入れる前に数時間待って、他の誰かが何かを思い付くかどうかを見ます!すごい仕事 –