私が持っている<Entry>
ユーザーがexamenpleため、小数点以下の数字を入力するために許可されているコントロールを...
0,2
0,02
5,405
ただし、次のように「0」(小数)は入力しません。
0,0
0,00
00,00
私のVistaで使用されているコントロールは
MyView.XAML:
<Entry
HorizontalOptions="FillAndExpand"
Placeholder="Cantidad"
Keyboard="Numeric"
MaxLength="5"
Text="{Binding CantidadEstimado}"></Entry>
次に、ViewModelで次の方法で文字列型を使用して値をキャプチャします
ViewModel.CS:
string cantidadEstimado;
public string CantidadEstimado
{
get
{
return cantidadEstimado;
}
set
{
if (cantidadEstimado != value)
{
cantidadEstimado = value.setOnlyNumbersDouble();
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CantidadEstimado)));
}
}
}
私のPropertyAmountに見られるように、私はメソッドsetOnlyNumberDouble()を呼び出しています。これにより、ユーザーは単一のコンマ( "、")を入力できるようになり、次のメソッドをアタッチします...
public static string setOnlyNumbersDouble(this string s)
{
string sTemp = "";
foreach (var item in s)
{
if (item == ',')
{
if (!sTemp.Contains(","))
{
sTemp += item;
}
}
else
{
sTemp += item;
}
}
return Regex.Replace(sTemp, @"[^0-9,]+", "");
}
ユーザーが小数として「0」を入力していないことを検証するにはどうすればよいですか?setOnlyNumberDouble()メソッドを再利用できますか?私のために何か助けはありますか?
正規表現を使用できます。
bool isZero = Regex.Matches(input,"[0,]");
または
bool isZero = int.Parse(input.Replace(",","") == 0;
余分なコンマや数値以外の文字を削除して、強制的に有効な二重数値にしようとする代わりに、...検証してみてください。
public static bool IsValidDouble(this string s)
{
double d = 0;
double.TryParse(s, out d);
return d != 0; //will be false if result is 0
//return d > 0; if you don't want negativer values
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加