У меня есть TextBox
определено в моем XAML как:обновление строки формата TextBox на потерянном фокусе
<TextBox x:Name="AmountDueTextBox"
Width="250"
RelativePanel.AlignLeftWith="BalanceTextBox"
RelativePanel.Below="BalanceTextBox"
Text="{x:Bind ViewModel.CurrentInvoice.AmountDue,
Mode=TwoWay,
Converter={StaticResource StringFormatConverter},
ConverterParameter='{}{0:N}'}" />
Преобразователь применяется, когда я TAB из TextBox
, но если я нажимаю прочь, строки не будет отформатирован автоматически. Я читал подобные вопросы, но не видел никакого решения. Как я уже упоминал, он работает правильно, когда выкладывается, но не нормально LostFocus
.
Я использую шаблон 10 в универсальном проекте Windows. Вот StringFormatConverter
из шаблона 10:
public class StringFormatConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
var format = (parameter as string) ?? Format;
if (format == null)
return value;
if(string.IsNullOrWhiteSpace(language))
{
return string.Format(format, value);
}
try
{
var culture = new CultureInfo(language);
return string.Format(culture, format, value);
}
catch
{
return string.Format(format, value);
}
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
throw new NotImplementedException();
}
public string Format { get; set; }
}
EDIT Добавлен пользовательский ConvertBack
метод:
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
if (value is string)
{
decimal returnDecimal;
if (decimal.TryParse(value as string, out returnDecimal))
{
return returnDecimal;
}
}
return value;
}
Можете ли вы показать более подробную информацию о вашем 'StringFormatConverter'. –
@ NicoZhu-MSFT Я отредактировал сообщение, чтобы включить код 'StringFormatConverter'. –
Когда вы удаляете или удаляете TextBox, метод 'ConvertBack' будет выполняться для привязки' TwoWay'. Насколько я вижу, он «бросает новое NotImplementedException»? –