繁体   English   中英

Xamarin Forms:双向绑定和字符串格式的问题

[英]Xamarin Forms: Problem with TwoWay Binding and StringFormat

我有一个Entry ,其中Text属性在我的视图 model 中绑定到double精度。 此绑定是TwoWay并且有 2 个小数位的StringFormat

这是代码:

<Entry Keyboard="Numeric" Text="{Binding ViewModel.Weight, Mode=TwoWay, StringFormat='{0:F2}'}" />

看起来完全没有问题,但有一个:

当我开始在此条目中Entry时,cursor 移动到最后,所以我必须将它移回我想要输入的 position。

这是一个非常讨厌的行为。 如果我删除StringFormat一切都会完美!

想法??

在此处输入图像描述

非常讨厌的行为......嘿等等,行为呢!

我试图通过遵循良好的指导来实现你的案例,好老的@AdamPedley 在他离开 Xamarin 之前离开了我们......

https://xamarinhelp.com/masked-entry-in-xamarin-forms/

然而,我意识到,即使是那种很好的行为也会表现出那种令人讨厌的行为。

我看到的唯一可以执行良好的选项是在用户离开条目后应用格式(当触发Unfocused事件时!)

为此,您必须订阅Unfocused事件:

<Entry x:Name="entry" 
       Keyboard="Numeric" 
       Text="{Binding Weight, Mode=TwoWay}"
       Unfocused="entry_Unfocused"/>

然后在后面的代码中

private void entry_Unfocused(object sender, FocusEventArgs e)
{
    if (double.TryParse(entry.Text, out double result))
    {
        entry.Text = String.Format("{0:F2}", Math.Floor(result * 100) / 100);
    }
} 

注意:默认情况下,String.Format 会舍入结果。 在这里,我使用了 SO 线程中给出的解决方案来避免这种讨厌的行为,并将小数位减少到第二位......但你可以做你想做的事! (我发现自动执行舍入会导致我在另一个 SO 线程中描述的问题!)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM