【问题标题】:How to set the default value of DateTime to empty string?如何将 DateTime 的默认值设置为空字符串?
【发布时间】:2011-04-09 04:19:23
【问题描述】:

我有一个名为 Raised_Time 的属性,该属性显示数据网格单元格中发出警报的时间。当用户创建任何警报时,我不想在数据网格单元格中显示任何内容,它只显示空单元格。

我在互联网上搜索,发现可以使用 DateTime.MinValue 设置 DateTime 的默认值,这将显示日期时间的 MinValue,即“1/1/0001 12:00:00 AM”。

相反,我希望数据网格单元格保持空白,直到发出警报,它不会显示任何时间。

我认为在这种情况下可以编写 datatrigger。我无法为这种情况编写数据触发器。我是否还需要一个转换器来检查 DateTime 是否设置为 DateTime.MinValue 是否将数据网格单元格留空??

请帮忙!!

【问题讨论】:

  • 在互联网上搜索.. 不错 ;)

标签: wpf datetime datagrid datatrigger


【解决方案1】:

我为此使用nullable datetime,扩展方法如下:

 public static string ToStringOrEmpty(this DateTime? dt, string format)
 {
     if (dt == null)
        return string.Empty;

     return dt.Value.ToString(format);
 }

【讨论】:

    【解决方案2】:

    如何更改您的属性以链接到 DateTime 的私有字段,例如:

    public string Raised_Time
    {
      get
      {
        if(fieldRaisedTime == DateTime.MinValue)
        {
          return string.Empty();
        }
        return DateTime.ToString();
      }
      set
      {
        fieldRaisedTime = DateTime.Parse(value,   System.Globalization.CultureInfo.InvariantCulture);
      }
    }
    

    【讨论】:

      【解决方案3】:

      我看到了两个简单的解决方案:

      1. 你使用Nullable数据类型DateTime?,这样如果没有设置闹钟时间,你可以存储null而不是DateTime.MinValue

      2. 您可以使用转换器,here is an example

      【讨论】:

        【解决方案4】:

        我会为此使用转换器,因为我可以很容易地看到将来重用它。这是我以前使用的一个,它将 DateFormat 的字符串值作为 ConverterParameter。

        public class DateTimeFormatConverter : IValueConverter
        {
            public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
            {
                if ((DateTime)value == DateTime.MinValue)
                    return string.Empty;
                else
                    return ((DateTime)value).ToString((string)parameter);
            }
        
        
            public object ConvertBack(object value, System.Type targetType, object parameter, CultureInfo culture)
            {
                throw new System.NotImplementedException();
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-08-25
          • 2011-07-06
          • 1970-01-01
          • 1970-01-01
          • 2017-11-26
          • 2011-03-29
          相关资源
          最近更新 更多