我有一个Xamarin Forms应用程序,其条目定义如下:
final String cookieName = "cookie_name";
// Retrieves cookie from WebClient
ResponseCookie cookie = webClient.post()
.uri(PWD_AUTH_URI)
.contentType(MediaType.APPLICATION_JSON)
.syncBody(request)
.exchange()
.map(response -> response.cookies().getFirst(cookieName))
.block();
// Set ResponseCookie as new cookie for response
res.addCookie(new Cookie(cookieName, cookie.getValue()));
金额属性只是一个简单的doulbe属性:
<Entry x:Name="AmountEntry"
Text="{Binding SelectedPayment.Amount}"
Keyboard="Numeric"
HorizontalTextAlignment="End"
Focused="AmountFieldGotFocus" />
在大多数使用各种数字的地区都可以使用。但是我有一个用户使用俄罗斯区域设置的报告,他不能输入任何doulbe数字。将模拟器设置为以下语言设置后,便可以重现它:
写逗号,但是在键入下一个数字时将其删除。根本没有写数字键盘上的点。有趣的是,当我删除Keyboard =“ Numeric”并只写一个点时,它正在工作。我在某些地区必须处理不同的事情吗?
以下是一段很好地显示问题的屏幕录像:https://github.com/MoneyFox/MoneyFox/files/3140027/device-2019-05-02-183502.zip
如果有帮助,则存储库位于GitHub:https://github.com/MoneyFox/MoneyFox 相关文件是演示项目中的ModifyPaymentUserControl和服务项目中的PaymentViewModel。
在Xamarin Forms存储库中的问题:https://github.com/xamarin/Xamarin.Forms/issues/6167
答案 0 :(得分:0)
我对小数点分隔符和区域也有类似的问题。最后,我决定将点.
设置为我的应用的小数点分隔符。
只需在 Shared Project (共享项目)中的App
类中调用以下方法即可实现:
/// <summary>
/// Sets a custom culture which is the same as the device's culture
/// but with the dot "." as the decimal separator.
/// </summary>
/// <remarks>
/// This is particularly important in order to be able to use Keyboard.Numeric,
/// since the Keyboard.Numeric shows always dot for decimal separators independently
/// of the Culture (De-de should use comma ",").
/// </remarks>
public static void SetCustomCulture()
{
CultureInfo customCulture = (CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
customCulture.NumberFormat.NumberDecimalSeparator = ".";
System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;
}
希望这对您有所帮助。如果您找到更好的解决方案,请告诉我!