我目前正在C#中创建一个带有德国市场文本框的WPF用户界面。
我在Text Box文本和Double Value之间创建了一个Data绑定。
<TextBox Text="{Binding Path=Length, Mode=TwoWay}"/>
如果我进入&#34; 10.4&#34;它将保存双值10,4
如果我进入&#34; 10,4&#34;它将保存双值104.0
如果我输入&#34; asd&#34;它不会保存任何内容,但会在文本框周围加上红色高亮显示。
我希望这个盒子可以接受两种方式&#34;,&#34;和&#34;。&#34;并平等对待他们。
因此我使用了转换器 (我从这里得到:https://social.msdn.microsoft.com/Forums/de-DE/b3a5a9ba-0ebe-4a8a-9e34-f32e9545c941/kommazahlen-im-datagrid)
将Converter={StaticResource DoubleConverter}, ConverterCulture=de-de,
添加到XAML
public class DoubleConverter : System.Windows.Data.IValueConverter
{
#region IValueConverter Member
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return double.Parse(value.ToString().Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);
}
#endregion
}
&#34;,&#34;和&#34;。&#34;问题现在已经解决,但是&#34; asd&#34;案件已经改变。我得到一个例外,红色方块消失了。
如何将这两种行为结合起来?
由于 卡尔
答案 0 :(得分:1)
string input = value.ToString().Replace(",", "."), System.Globalization.CultureInfo.InvariantCulture);
double number;
bool result = Double.TryParse(input , out number);
if (result)
{
return number;
}
else
{
return input;
}