Вы можете использовать метод decimal.TryParse
.
var isDecimal = decimal.TryParse(entry.Text, out n);
Более того, вам не нужна дополнительная проверка
string.IsNullOrWhiteSpace(entry.Text)
Если значение entry.Text
такоевышеприведенная функция возвращает true
, тогда decimal.TryParse
вернет false для такого значения.
При этом ваш класс может быть подвергнут рефакторингу, как показано ниже:
public class BsnValidationTriggerAction : TriggerAction<Entry>
{
private string _prevValue = string.Empty;
protected override void Invoke(Entry entry)
{
decimal n;
var isDecimal = decimal.TryParse(entry.Text, out n);
_prevValue = isDecimal ? entry.Text : _prevValue;
}
}
Обновление
Существует перегрузка метода TryParse
, который принимает в качестве аргументов также стиль числа и поставщика формата .
public static bool TryParse(
string s,
NumberStyles style,
IFormatProvider provider,
out decimal result
)
Вы можете найти примеры того, как его использовать здесь .