更新文本框的文本格式对LostFocus - WinRT
本文关键字:文本 LostFocus WinRT 格式 更新 | 更新日期: 2023-09-27 18:08:26
我正在开发使用c#和XAML的Windows商店应用程序,并在用户输入页面上工作。我使用IValueConverter
将绑定数据转换为货币格式的string
,而不仅仅显示小数。
当用户导航到页面时,转换器工作正常,TextBox
文本显示为货币格式。但是,当用户更改TextBox.Text
值,然后TextBox
失去焦点时,转换器不会再次将其更改为良好的货币格式,它只是保持用户输入的格式。
据我所知,没有StringFormat
可以像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
设置在代码后面
你的转换器工作两种方式?我怀疑,如果没有,双向绑定就会被破坏。
如果你这样做呢:
<TextBox Text="{Binding MyValue, UpdateSourceTrigger=PropertyChanged, ConverterParameter='{}{0:c}', Converter={StaticResource DecimalValueConverter}, Mode=TwoWay}"