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

C#/WPF显示自定义字符串(例如,用string.empty替换“0”),c#,wpf,string-formatting,C#,Wpf,String Formatting,我已通过将文本框绑定到字符串值 Text="{Binding AgeText, Mode=TwoWay}" 如何显示字符串“0”的string.empty或“”,以及所有其他字符串的原始值 谢谢你的帮助 干杯 PS:一种方法是为字符串定制ViewModel。。但是,如果可能的话,我更愿意直接在XAML中实现它。我认为除了使用ViewModel之外,唯一的方法就是创建一个自定义的ValueConverter 所以基本上你的选择是: 视图模型: private string ageText;

我已通过将文本框绑定到字符串值

 Text="{Binding AgeText, Mode=TwoWay}"  
如何显示字符串“0”的string.empty或“”,以及所有其他字符串的原始值

谢谢你的帮助

干杯


PS:一种方法是为字符串定制ViewModel。。但是,如果可能的话,我更愿意直接在XAML中实现它。

我认为除了使用ViewModel之外,唯一的方法就是创建一个自定义的ValueConverter

所以基本上你的选择是:

视图模型:

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

        return ageText;
    }
    ...
}
值转换器:

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)
    {

    }
}

由于Age属性在这里显然是一个数字,因此另一种方法是将Age公开为int,并使用
绑定的
StringFormat
属性:

Text="{Binding Age, Mode=TwoWay, StringFormat='{}{0:#}'}"
我在
这将实现以下目的:

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

干杯

我会选择自定义值转换器谢谢!ValueConverter正是我想要的。Cheers我记得在Excel中使用#或类似的东西,如果值为0,则显示空单元格。这在StringFormat中难道不起作用吗?你更快了:)我在这里看到了一个问题,如果用户输入值string.empty,我的其他类将需要一个“0”,否则它们将崩溃,所以我想最好的方法是使用ValueConverter。干杯