c# - 如何将数据绑定(bind)零 double 值转换为空字符串?

标签 c# silverlight data-binding

我有这个付款对象

public class Payment 
{
    public Guid Id { get; set; }
    public double Amount { get; set; }
}

这是绑定(bind)到文本框的数据

<TextBox x:Name="_AmountTB" Text="{Binding Path=Amount, Mode=TwoWay}" />

我要求每当 Amount 为 0 时,我就不会在 TextBox 中显示任何内容,这怎么办?

我在考虑某种转换器,但我需要有人告诉我如何做?!

谢谢,

巫术

最佳答案

您可以为此使用值转换器,但您不需要这样做。您可以简单地使用 Binding 标记扩展的 StringFormat 来指定 three-part custom numeric format string .它看起来像这样:

<TextBox Text="{Binding Path=Amount, StringFormat='0.00;-0.00;#'}" />

字符串格式中的分号告诉 .NET 使用第一部分格式化正数,中间部分格式化负数,最后一部分格式化零值。棘手的部分是为我使用井号 (#) 的零部分获取一个空字符串。此格式说明符在其位置显示有效数字,但由于在使用该部分时该值始终为零,因此会生成空字符串。

请注意,StringFormat 需要 Silverlight 4。如果您使用的是 Silverlight 3,则需要一个值转换器。 (您可能希望更稳健地处理错误...)

public class ZeroConverter : IValueConverter {

    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
    {
        return String.Format(culture, "{0:0.00;-0.00;#}", value);
    }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
        string str = value as string;
        if (!String.IsNullOrEmpty(str)) {
            return System.Convert.ChangeType(str, targetType, culture);
        }
        return System.Convert.ChangeType(0, targetType, culture);
    }

}

XAML

<UserControl>
    <UserControl.Resources>
        <local:ZeroConverter x:Key="ZeroToEmpty" />
    </UserControl.Resources>
</UserControl>
<TextBox Text="{Binding Path=Amount, Converter={StaticResource ZeroToEmpty}}" />

关于c# - 如何将数据绑定(bind)零 double 值转换为空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3286555/

相关文章:

c# - 使用 Dynamic Linq 处理动态选择

c# - 没有回发的级联下拉列表

silverlight - Windows Phone 是否延迟或批处理 HTTP 请求?看到对同一 LAN 上的服务器的 600 毫秒请求延迟

c# - DataGridView 数据源不更新

c# - 未找到 ObjectDataProvider wpf 本地类型

c# - 使用 GitHub API 在一次提交中编辑多个文件

c# - 什么应该放入 AssemblyTrademarkAttribute 中?

silverlight - 创建项目后生成默认的 Silverlight Web 项目

c# - 如何在 Silverlight 中使用新的印度卢比符号?

c# - 以样式更改按钮的内容?