У меня есть много номеров, чтобы иметь дело с моим пользовательским интерфейсом. Я хочу, чтобы некоторые из них не были запятыми, а некоторые - двумя десятичными знаками, а другие - тем, что они введены (3 или 4 десятичных знака).преобразователи wpf с различным десятичным числом
У меня есть конвертер с именем DoubleToStringConverter так:
[ValueConversion(typeof(double), typeof(string))]
public class DoubleToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return value == null ? null : ((double)value).ToString("#,0.##########");
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
double retValue;
if (double.TryParse(value as string, out retValue))
{
return retValue;
}
return DependencyProperty.UnsetValue;
}
}
Есть ли способ, чтобы написать только один конвертер для достижения этой цели? Кажется, что нет никакого способа параметризованного преобразователя. StringFormat в xaml, похоже, преобразует строку в другой тип данных. Он не позволяет отображать подстроку из xaml.
Я могу только думать о создании IntegerToStringConverter, Double2ToStringConverter, Double3ToStringConverter и т. Д. Но я хотел бы узнать, есть ли более эффективный способ.
Почему вы не используете 'parameter', чтобы указать ваши значащие цифры? – Khan
Да. Вы [можете добавить параметр к своей привязке] (http://msdn.microsoft.com/en-us/library/system.windows.data.binding.converterparameter.aspx). Он доступен в параметре подписи метода. Вы можете преобразовать это в строку, затем определить приведение, которое вам нужно сделать (int/double/long), а затем вызвать ToString на нем. используйте 'targetType' на обратной стороне, чтобы определить, что нужно анализировать. Не знаете, где у вас проблема. – Will