我有一个十进制值,我想使用 Xamarin.Forms<Entry />
控件以百分比形式显示和编辑。我曾尝试使用 IValueConverter,但是当我编辑时,光标到处都是,而且很难正确和简单地编辑。我使用StringFormat=
.
a) 如何简单轻松地将小数编辑为 * 100?
b) 我可以显示 % 符号吗?
c) 我可以有条件地进行转换:当字段 Y = 1 时,显示为百分比,当字段 Y = 2 时,显示为小数?
我有一个十进制值,我想使用 Xamarin.Forms<Entry />
控件以百分比形式显示和编辑。我曾尝试使用 IValueConverter,但是当我编辑时,光标到处都是,而且很难正确和简单地编辑。我使用StringFormat=
.
a) 如何简单轻松地将小数编辑为 * 100?
b) 我可以显示 % 符号吗?
c) 我可以有条件地进行转换:当字段 Y = 1 时,显示为百分比,当字段 Y = 2 时,显示为小数?
a) 如何简单轻松地将小数编辑为 * 100?b) 我可以显示 % 符号吗?
您可以使用UnFocused
event 将十进制值显示为 % 符号。
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");
}
}
}