Я использую IValueConverter для преобразования double в строку. Строка, созданная конвертером, не отображается в соответствующем текстовом поле. Например, если пользователь вводит 1.1, мой конвертер значений может форматировать его как «1». Однако я все еще вижу «1.1» в текстовом поле. Я проверил в отладчике, что метод Convert() конвертера вызывается и возвращает значение «1». Я что-то пропустил?IValueConverter не обновляет wpf TextBox
метод преобразователя заключается в следующем:
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value == null)
{
return string.Empty;
}
if (value is double && targetType == typeof(string))
{
string format = parameter == null ? "{0:F2}" : (string)parameter;
string formatted = string.Format(format, value);
return formatted;
}
return value.ToString();
}
Часть XAML выглядит следующим образом:
<TextBox x:Name="balance" Grid.Row="12" Grid.Column="1"
Text="{Binding Balance, Converter={StaticResource nullableConverter}, ConverterParameter=\{0:F0 \}, ValidatesOnDataErrors=True, ValidatesOnExceptions=True, UpdateSourceTrigger=PropertyChanged}" Width="90" TextAlignment="Right" />
Спасибо.
Вы видите ошибки привязки в окне вывода во время выполнения? –
Нет, я не вижу никаких ошибок. – bdristan
Итак, вы вводите «1.1», выходите из текстового поля, чтобы вызвать «UpdateSourceTrigger = PropertyChanged», свойство «Balance» в ваших обновлениях DataContext до «1.1», код конвертера запускается и преобразует '1.1' в' 1' , а затем TextBox.Text по-прежнему отображает '1.1'? Это не должно быть так ... можете ли вы проверить эти точные шаги в указанном порядке? – Rachel