3

オブジェクト内の DataTime にバインドされた DatePicker があり、実行時に DatePicker の文字列 "Select a Date" の代わりに "1/1/0001" が表示され、実際のカレンダーを使用するのが難しくなります。DatePicker を文字列にバインドしていたときは問題ありませんでしたが、DateTime に変更するとこうなりました。これがどのように機能するか教えてください。これは私がこれまでに持っているものです:

XAML には次のものがあります。

<DatePicker Grid.Column="4" Grid.Row="9" Name="dueDateBox" VerticalAlignment="Center">
    <DatePicker.SelectedDate>
        <Binding Path="DueDate" UpdateSourceTrigger="PropertyChanged" Mode="TwoWay">
            <Binding.ValidationRules>
                <my:DateRangeRule/>
            </Binding.ValidationRules>
        </Binding>
    </DatePicker.SelectedDate>
</DatePicker>

私が持っているC#で:

public DateTime DueDate
{
    get { return dueDate; }
    set
    {
        if (DueDate != null) || !DueDate.Equals(value))
        {
            dueDate = value;
            OnPropertyChanged("DueDate");
        }
    }
}

依存関係プロパティも設定していますが、これが役割を果たしているかどうかはわかりません:

public static readonly DependencyProperty DueDateProperty =
        DependencyProperty.Register("DueDate", typeof(DateTime),
        typeof(UpdateJobDialog), new PropertyMetadata(DateTime.Now));
4

3 に答える 3

6

おそらく DateTime を使用するのに役立ちますか? DateTime の代わりに、DateTime は null 許容ではないため、null ではなくデフォルト値の 1/1/0001 に設定しています。

public DateTime? DueDate
{
    //Need to change the type of the private variable as well
    get { return dueDate; }
    set
    {
        if (DueDate != null) || !DueDate.Equals(value))
        {
            dueDate = value;
            OnPropertyChanged("DueDate");
        }
    }
}
于 2012-06-21T21:25:59.643 に答える
1

DueDateProperty依存関係プロパティをプロパティに接続していませんDueDate。代わりにこれを試してください:

public DateTime DueDate
{
    get { return (DateTime)GetValue(DueDateProperty); }
    set { SetValue(DueDateProperty, value); }
}
于 2012-06-21T22:42:25.443 に答える
0

null 値を持つ date プロパティを datepicker にバインドする際に、同じ問題に遭遇しました。何を試しても、表示される値は01/01/0001でした。最後に、2 番目のプロパティを文字列として設定し、特に xaml 日付ピッカーにバインドすることでこれを修正しました。日付が null の場合は、string.empty を返します。

これで解決しました...(VBのコード)

Public Property ClosedDateDTP() As String
    Get
        If _closedDate = Nothing Then
            Return String.Empty
        Else
            Return _closedDate.ToString
        End If
    End Get
    Set(value As String)
        If value = Nothing Then
            _closedDate = Nothing
        Else
            _closedDate = CDate(value)
        End If
    End Set
End Property

XAML 日付ピッカー コード...

        <DatePicker x:Name="dtpClosedDate"
                SelectedDate="{Binding ClosedDateDTP, Mode=TwoWay}"
                HorizontalAlignment="Left"
                Margin="284,120,0,0"
                VerticalAlignment="Top">
    </DatePicker>
于 2016-06-15T14:31:31.997 に答える