C#/ WPF显示自定义字符串(例如,用string.empty替换“0”)

时间:2009-07-09 09:10:03

标签: c# wpf string-formatting

我已经通过

将TextBox绑定到字符串值
 Text="{Binding AgeText, Mode=TwoWay}"  

如何为字符串“0”显示string.empty或“”,为原始值显示所有其他字符串?

感谢您的帮助!

干杯

PS:一种方法是字符串的自定义ViewModel ..但我更愿意直接在XAML中进行,如果可能的话。

3 个答案:

答案 0 :(得分:7)

我认为使用ViewModel的唯一方法是创建自定义ValueConverter。

所以基本上你的选择是:

视图模型:

private string ageText;
public string AgeText{
    get{
        if(ageText.equals("0"))
            return string.empty;

        return ageText;
    }
    ...
}

ValueConverter:

public class AgeTextConverter : IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value.Equals("0"))
            return string.Empty;

        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {

    }
}

答案 1 :(得分:7)

我在http://www.codeproject.com/KB/books/0735616485.aspx上找到了一些东西 这样就可以了:

Text="{Binding AgeText, StringFormat='\{0:#0;(#0); }'}"

干杯

答案 2 :(得分:4)

由于Age属性显然是一个数字,另一种方法是将Age显示为int并使用StringFormat的{​​{1}}属性:

Binding