0

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

4

2 回答 2

0

如果你这样做怎么办:

<TextBox Text="{Binding MyValue, UpdateSourceTrigger=PropertyChanged, ConverterParameter='{}{0:c}', Converter={StaticResource DecimalValueConverter}, Mode=TwoWay}"
于 2013-04-10T20:15:37.053 回答
0

你的转换器可以双向工作吗?我怀疑如果没有 - TwoWay 绑定会被破坏。

于 2013-04-10T21:21:40.107 回答