如果满足条件,则在XAML GridViewColumn中隐藏一些值

时间:2014-01-15 08:16:27

标签: c# wpf xaml gridviewcolumn

我有一个GridView,其中一些元素绑定到我的对象。我工作的价值是:

<GridViewColumn x:Name="DataGridLastEdit" Header="Last Edit" Width="150px" DisplayMemberBinding="{Binding lastEdit}" />

lastEditDateTime类型,但对于某些元素,它是空的并显示 1/1/0001 12:00:00 AM (它可以根据计算机时间格式设置),产生非常难看的效果。

我只想隐藏它没有有效日期的元素,但我对XAML很新,我不能这样做。我读到了有关使用转换器的信息,但我总是写一些错误,甚至无法尝试它是否有效,我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

使用ValueConverter

public class EmptyDateCoverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if(value is DateTime)
        {
            if((DateTime)value == DateTime.MinValue)
            {
                 return "";
            }
        }
        return value;
    }

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        //We don't need convert back
        throw new NotImplementedException();
    }
}

为转换器创建资源,例如在控件的资源中(conv是定义转换器的alias for the namespace

<conv:EmptyDateCoverter x:Key="EmptyDate" />

然后以这种方式应用绑定:

<GridViewColumn x:Name="DataGridLastEdit" Header="Last Edit" Width="150px" DisplayMemberBinding="{Binding lastEdit, Converter={StaticResource EmptyDate}}" />
相关问题