0

こんにちは、DatumNabavke という日付フィールドを含むいくつかのフィールドを持つリストビューがあります。

public DateTime? DatumNabavke
    {
        get { return _datumNabavke; }
        set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }

    }

ご覧のとおり、これは null 許容の日付フィールドです。Null の場合もありますが、Null の場合は DateTimeNow で自動的に保存されます。

if (adress.DatumNabavke == null)
                {
                    oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
                }

したがって、新しい行を作成して DatumNabavke フィールドを空のままにすると、ListView と GridView で今日の日付として表示されるはずです

<GridViewColumn   Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke, StringFormat= d}" />

しかし、何らかの理由でこれは起こりません。私が表示した他のすべての行、名前、ID、値、すべてが想定どおりに表示されますが、何らかの理由で日付が空白になっています。

別のこととして、デバッグ出力で次のエラーが発生します。

System.Windows.Data エラー: 11: フォールバック値 'x:Static sys:DateTime.Now' (タイプ 'String') を変換して 'SelectedDate' (タイプ 'Nullable1'). BindingExpression:Path=Adress.DatumZaduzenja; DataItem=null; target element is 'DatePicker' (Name='datumZaduzenja'); target property is 'SelectedDate' (type 'Nullable1') FormatException:'System.FormatException: x:Static sys:DateTime.Now は DateTime の有効な値ではありません。---> System.FormatException: 文字列が有効な DateTime として認識されませんでした。インデックス 0 から始まる不明な単語があります。 System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles) at System.ComponentModel.DateTimeConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value) --- 内側の終わり例外スタック トレース --- System.ComponentModel.DateTimeConverter.ConvertFrom (ITypeDescriptorContext コンテキスト、CultureInfo カルチャ、オブジェクト値) で System.ComponentModel.NullableConverter.ConvertFrom (ITypeDescriptorContext コンテキスト、CultureInfo カルチャ、オブジェクト値) で System.Windows.Data.BindingExpressionBase .ConvertValue(オブジェクト値、DependencyProperty dp、

あなたの誰かが助けることができれば、私は非常に義務付けられます.

4

2 に答える 2

1

DatumNabavke は ViewModel のプロパティであり、その ViewModel のコレクションはすでに ListView.ItemsSource に正常にバインドされていると思います。やってみました:

public DateTime? DatumNabavke
{
    get { 
        if( _datumNabavke == null)
             return DateTime.Now;

        return _datumNabavke; 
    }
    set { _datumNabavke = value; OnPropertyChanged("DatumNabavke"); }

}

コードを呼び出す場所を指定していません

if (adress.DatumNabavke == null) { oleComd.Parameters[":datumnabavke"].Value = DateTime.Now; }

ViewModel コレクションが ItemSource として読み込まれた後にこれが発生した場合、このコードはプロパティ通知を発生させないため、バインディングは機能しません。これを試すこともできます:

if (adress.DatumNabavke == null)
{
    oleComd.Parameters[":datumnabavke"].Value = DateTime.Now;
    OnPropertyChanged("DatumNabavke");
}
于 2012-11-23T14:46:24.177 に答える
1

たとえば、別の属性で形式を指定しようとしましたか

<GridViewColumn Header="Datum Nabavke" DisplayMemberBinding="{Binding DatumNabavke}" StringFormat="{}{0:dd/MM/yyyy}" />
于 2012-11-23T14:25:41.860 に答える