在LostFocus上更新TextBox文本格式 - WinRT

时间:2013-04-10 20:12:16

标签: c# winrt-xaml

我正在使用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设置在代码隐藏

2 个答案:

答案 0 :(得分:0)

如果您这样做,该怎么办:

<TextBox Text="{Binding MyValue, UpdateSourceTrigger=PropertyChanged, ConverterParameter='{}{0:c}', Converter={StaticResource DecimalValueConverter}, Mode=TwoWay}"

答案 1 :(得分:0)

您的转换器是否双向工作?我怀疑如果没有 - TwoWay绑定会被破坏。