0

我有一个十进制值,我想使用 Xamarin.Forms<Entry />控件以百分比形式显示和编辑。我曾尝试使用 IValueConverter,但是当我编辑时,光标到处都是,而且很难正确和简单地编辑。我使用StringFormat=.

a) 如何简单轻松地将小数编辑为 * 100?

b) 我可以显示 % 符号吗?

c) 我可以有条件地进行转换:当字段 Y = 1 时,显示为百分比,当字段 Y = 2 时,显示为小数?

4

1 回答 1

1

a) 如何简单轻松地将小数编辑为 * 100?b) 我可以显示 % 符号吗?

您可以使用UnFocusedevent 将十进制值显示为 % 符号。

xml:

 <Entry x:Name="entry" Unfocused="entry_Unfocused"/>

代码:

  private void entry_Unfocused(object sender, FocusEventArgs e)
    {
        var entry = sender as Entry;
        decimal value;
        if (Decimal.TryParse(entry.Text, out value))
        {
            entry.Text = value.ToString("P");
        }
        else
        {
            DisplayAlert("Error", "Please input decimal", "Cancel");
        }

    }

在此处输入图像描述

c) 我可以有条件地进行转换:当字段 Y = 1 时,显示为百分比,当字段 Y = 2 时,显示为小数?

xml:

 <StackLayout>
        <Label x:Name="label" Text="Y:" />
        <Entry x:Name="entry_Y" />
        <Entry x:Name="entry" Unfocused="entry_Unfocused" />

    </StackLayout>

代码:

 private void entry_Unfocused(object sender, FocusEventArgs e)
    {
        var entry = sender as Entry;
        if (entry_Y.Text=="1")
        {               
            decimal value;
            if (Decimal.TryParse(entry.Text, out value))
            {
                entry.Text = value.ToString("P");
            }
            else
            {
                DisplayAlert("Error", "Please input decimal", "Cancel");
            }
        }
        else if (entry_Y.Text == "2")
        {
            decimal value;
            if (Decimal.TryParse(entry.Text, out value))
            {
                entry.Text = value.ToString();
            }
            else
            {
                DisplayAlert("Error", "Please input decimal", "Cancel");
            }
        }

    }

在此处输入图像描述

于 2020-05-11T08:46:57.180 回答