格式化零值为空字符串? [英] Formatting Zero Values as Empty String?

查看:240
本文介绍了格式化零值为空字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力进入WPF字符串格式的第一次尝试。我希望能够格式化数据网格中的文本框的一个空字符串,当基础值为零和格式的所有其他值为0.000。然而,我的XAML似乎没有达到这个工作,因为它显示所有值的空白,而不仅仅是零。



<$ p $ < code>< DataGridTextColumn Header =dLBinding ={Binding Path = Value.DLHistoric,StringFormat ='{} {0.000 ;;}'Width =Auto/>

我正在使用这里,并在第二个分号之后加上一个空格来获得空字符串。

非常感谢!

更新
$

 < DataGridTextColumn Header =dLBinding ={Binding Path = Value.DLHistoric,StringFormat = 0.000 ;;#}Width =Auto/> 


解决方案

示例IValueConverter

  [ValueConversion(typeof(string),typeof(string))] 
public class StringToFeetAndInches:IValueConverter
{
public object Convert (对象值,类型targetType,对象参数,CultureInfo文化)
{
string str = value as string;
if(string.IsNullOrEmpty(str))return str;
str = str.Insert(1,');
str = str +\;
return str;
}

公共对象ConvertBack(对象值,类型targetType,对象参数,CultureInfo culture)
{
return 0;
}
}

< UserControl.Resources>
< NS:StringToFeetAndInches x:Key = cStringToFeetAndInches/>
< /UserControl.Resource>

< TextBlock Text ={Binding Path = Height,Converter = {StaticResource cStringToFeetAndInches}}/>


I'm struggling with my first foray into WPF string formatting. I'd like to be able to format a textbox column in a data grid with an empty string when the underlying value is zero and format all other values as 0.000. However, my XAML doesn't seem to be up to the job as it shows blanks for all values and not just for zeros:

<DataGridTextColumn Header="dL" Binding="{Binding Path=Value.DLHistoric, StringFormat='{}{0.000;; }'" Width="Auto" />

I am using the semicolon operator as described here and have added a space after the second semicolon to get the empty string.

Many thanks!

Update

This does the trick:

<DataGridTextColumn Header="dL" Binding="{Binding Path=Value.DLHistoric, StringFormat=0.000;;#}" Width="Auto" />

解决方案

Example IValueConverter

   [ValueConversion(typeof(string), typeof(string))]
    public class StringToFeetAndInches : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            string str = value as string;
            if (string.IsNullOrEmpty(str)) return str;
            str = str.Insert(1, "'");
            str = str + "\"";
            return str; 
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return 0;
        }
    } 

<UserControl.Resources>
<NS:StringToFeetAndInches x:Key="cStringToFeetAndInches"/>
</UserControl.Resource> 

<TextBlock Text="{Binding Path=Height, Converter={StaticResource cStringToFeetAndInches}}" />

这篇关于格式化零值为空字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆