Ich habe ein TextBox
in meiner XAML definiert als:Update-String-Format von TextBox auf den Fokus verloren
<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}'}" />
Der Wandler angelegt wird, wenn ich TAB aus dem TextBox
, aber wenn ich weg klicken, die Zeichenfolge wird nicht automatisch formatiert. Ich habe ähnliche Fragen gelesen, habe aber keine Lösung gesehen. Wie ich bereits erwähnt habe, funktioniert es beim Tab-out zwar einwandfrei, aber nicht normal LostFocus
.
Ich verwende Vorlage 10 in einem universellen Windows-Projekt. Hier ist die StringFormatConverter
von Vorlage 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 Added benutzerdefinierte ConvertBack
Methode:
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;
}
Können Sie mehr Details über Ihren 'StringFormatConverter' anzeigen? –
@ NicoZhu-MSFT Ich habe den Beitrag bearbeitet, um den 'StringFormatConverter'-Code einzuschließen. –
Wenn Sie die TextBox TAB-Taste drücken oder wegklicken, wird die 'ConvertBack' Methode für' TwoWay' Binding ausgeführt. Soweit ich es sehen kann, "werfen neue NotImplementedException"? –