簡體   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