我正在使用C#和XAML开发Windows应用商店应用,并且正在处理用户输入页面。我使用IValueConverter
将绑定数据转换为格式为string
的货币,而不是仅显示小数。
当用户导航到该页面时,转换器工作正常,TextBox
文本显示为货币格式。但是,当用户更改TextBox.Text
值然后TextBox
失去焦点时,转换器不会再次将其更改为漂亮的货币格式,它只是保持格式,就像用户输入的那样。 / p>
据我所知,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
设置在代码隐藏
答案 0 :(得分:0)
如果您这样做,该怎么办:
<TextBox Text="{Binding MyValue, UpdateSourceTrigger=PropertyChanged, ConverterParameter='{}{0:c}', Converter={StaticResource DecimalValueConverter}, Mode=TwoWay}"
答案 1 :(得分:0)
您的转换器是否双向工作?我怀疑如果没有 - TwoWay绑定会被破坏。