如何解决当语言设置为法语时,小数点分隔符 ',' 在绑定到 double 属性时被忽略 xmlC#DecimalPointFixConverter.cs
所以我有一个 Entry 绑定到一个带有 Keyboard="Numeric"
的双属性。
-
不使用
StringFormat
,并且不会在应用级别修改/强制文化。 -
确认在法语中小数点分隔符是“,”所以“。”不会是允许的字符:
CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator equals ','
问题是当我在属性设置器中输入“12,3”时,该值等于 123。当然,最后它在输入字段中显示 123 而不是“12,3”。
xml
<Entry Keyboard="Numeric" Text="{Binding MyProperty}"/>
C#
private double _MyProp;
public double MyProperty
{
get { return _MyProp; }
set { SetProperty(ref _MyProp,value); }
}
如何克服这个问题?
解决方法
这似乎是一个 Xamarin.Forms issue,作为一种解决方法,使用值转换器:
<ContentPage.Resources>
<app1:DecimalPointFixConverter x:Key="DecimalPointFixConverter"/>
</ContentPage.Resources>
<Entry Keyboard="Numeric" Text="{Binding Path=MyProperty,Converter={x:StaticResource DecimalPointFixConverter}}"/>
DecimalPointFixConverter.cs
public class DecimalPointFixConverter : IValueConverter
{
public object Convert(object value,Type targetType,object parameter,CultureInfo culture)
{
return value;
}
public object ConvertBack(object value,CultureInfo culture)
{
return (value as string)?.Replace(',','.') ?? value;
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。