Невозможно добавить "."десятичная точка на строку с использованием IValueConverter. В настоящее время пользователь должен ввести «0. ##». Я хотел бы, чтобы пользователь мог вводить «. ##» в поле ввода в пользовательском интерфейсе (xaml), который связан с преобразователем значений, показанным в приведенном ниже коде.
Различные конфигурации преобразователя значений
открытый класс DecimalCommaDisplayConverter: IValueConverter {открытый объект Convert (значение объекта, тип targetType, параметр объекта, System.Globalization.CultureInfo culture) {if (value == null ||! (значение десятичное)) throw new ArgumentException («Этот преобразователь может использоваться только для значений типа decimal.»);
var decimalValue = (decimal)value;
//In the UI represent 0 as empty string.
if (decimalValue == default)
{
return string.Empty;
}
//Format the string with maximum of 4 decimal places and commas as appropriate.
// Examples: 0.23, 1.2, 1,234.5678
return decimalValue.ToString("#,0.####");
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null && !(value is string)) throw new ArgumentException("This converter may only be used on values of type string.");
string stringValue = (string)value;
//In the UI, 0 is represented as an empty string.
if (string.IsNullOrEmpty(stringValue))
{
return 0.0m;
}
if(decimal.TryParse((stringValue).Replace(",", ""), out decimal result))
{
return result;
}
//If the value isn't convertable, then just return it and let the TextChanged handler convert it back.
return stringValue;
}
при вводе значения в поле ввода в пользовательском интерфейсе. Я хотел бы, чтобы пользователь мог вводить ". ##", а не "0. ##" для простоты использования. В настоящее время пользователь должен ввести «0» с заполнителем или без него.