3

Raised_Timeというプロパティがあります。このプロパティは、datagridCellでアラームが発生した時刻を示します。ユーザーがアラームを作成したときにデータグリッドセルに何も表示したくありません。空のセルを表示するだけです。

インターネットでグーグルで検索したところ、DateTimeのデフォルト値はDateTime.MinValueを使用して設定でき、これにより日時のMinValue、つまり「1/1/000112:00:00AM」が表示されることがわかりました。

代わりに、アラームが発生するまでデータグリッドセルを空白のままにして、いつでも表示されないようにします。

この場合、datatriggerを記述できると思います。このシナリオのデータトリガーを作成できません。DateTimeがDateTime.MinValueに設定されているかどうかをチェックし、データグリッドセルを空白のままにするコンバーターも必要ですか?

助けてください!!

4

4 に答える 4

9

これにはコンバーターを使用します。これは、将来再利用するのが簡単にわかるものだからです。これは、ConverterParameterとしてDateFormatの文字列値を取得するために使用したものです。

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();
    }
}
于 2010-09-07T12:22:22.387 に答える
7

これを解決するための2つの簡単なオプションがあります。

  1. Nullableデータ型を使用して、アラーム時刻が設定されていない場合の代わりにDateTime?保存できるようにします。nullDateTime.MinValue

  2. コンバーターを使用できます。ここに例を示します。

于 2010-09-07T12:21:07.450 に答える
3

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);
  }
}
于 2010-09-07T12:18:26.427 に答える
2

私はnullable datetimeこれに、次のような拡張メソッドを使用します。

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

     return dt.Value.ToString(format);
 }
于 2010-09-07T12:13:13.627 に答える