Fre*_*lad 12 c# wpf culture textbox wpf-controls
如果我将Texta 绑定TextBox到float属性,则显示的文本不符合系统十进制(点或逗号).相反,它总是显示一个点('.').但是如果我在a中显示值MessageBox(使用ToString()),则使用正确的System Decimal.

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>
Run Code Online (Sandbox Code Playgroud)
代码背后
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());
}
Run Code Online (Sandbox Code Playgroud)
到目前为止,我已经用一个转换器解决了这个问题,转换器用系统十进制取代了dot(这是有效的),但这是必要的原因是什么?这是设计,是否有更简单的方法来解决这个问题?
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];
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4326 次 |
| 最近记录: |