Вы можете программно проанализировать значение с помощью преобразователя:
public class FormatConverter : IValueConverter
{
private static readonly CultureInfo s_cultureInfo = new CultureInfo("de");
public object Convert(object value, Type targetType, object parameter, CultureInfo culture) =>
((decimal)value).ToString("F2") + "%";
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string a = value.ToString();
decimal d;
if ((a?.Contains(",") == true && decimal.TryParse(a, NumberStyles.Any, s_cultureInfo, out d))
|| decimal.TryParse(a, NumberStyles.Any, CultureInfo.InvariantCulture, out d))
return d;
return Binding.DoNothing;
}
}
В приведенном выше примере реализации используется культура, которая поддерживает ,
при попытке преобразовать string
, который содержит запятую, в decimal
.
Вот как вы будете использовать его в разметке XAML:
<Window.Resources>
<local:FormatConverter x:Key="conv" />
</Window.Resources>
...
<TextBox Width="120" Grid.Column="2"
Text="{Binding xxxxx, Converter={StaticResource conv}}" />