我正在使用 C# 和 XAML 开发 Windows Store 应用程序,并且正在处理用户输入页面。我使用一个IValueConverter
将我的绑定数据转换为格式化的货币string
,而不是仅仅显示一个小数。
当用户导航到页面时,转换器工作正常,TextBox
文本以货币格式显示。但是,当用户更改TextBox.Text
值然后TextBox
失去焦点时,转换器不会再次将其更改为良好的货币格式,它只是保持用户输入的格式。
据我所知,没有StringFormat
使用 like in WPF
,那么如何TextBox
在用户编辑值后再次显示货币格式?
我的转换器:
public object Convert(object value, Type targetType, object parameter, string language)
{
if (parameter == null)
return ((decimal)value).ToString();
return String.Format((string)parameter, (decimal)value);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
decimal decVal = 0M;
decimal.TryParse((string)value, out decVal);
return decVal;
}
我的 XAML:
<Grid x:Name="InputGrid">
...
<Border>
<TextBox Text="{Binding MyValue, ConverterParameter='{}{0:c}', Converter={StaticResource DecimalValueConverter}, Mode=TwoWay}"
</Border>
....
</Grid>
InputGrid.DataContext = MyValueClassInstance
在代码隐藏中设置