エラー メッセージが示すように、はDisplayDateStart
null 許容のプロパティです。適切な結果を得るには、この条件を処理する必要があります。
つまり、このプロパティは、ユーザーが選択した日付ではなく、DatePicker のカレンダーに表示される最も早い日付を参照します。そのためには、null 許容でもDisplayDateStart
あるプロパティが必要です。SelectedDate
NULL 値を処理するにはさまざまな方法があります。TextBlock に何も表示しない、「N/A」またはその他のデフォルトを表示するなどです。以下に例を示します。
private void button20_Click(object sender, RoutedEventArgs e)
{
// This block sets the TextBlock to a sensible default if dates haven't been picked
if(!datePicker1.SelectedDate.HasValue || !datePicker2.SelectedDate.HasValue)
{
textBlock10.Text = "Select dates";
return;
}
// Because the nullable SelectedDate properties must have a value to reach this point,
// we can safely reference them - otherwise, these statements throw, as you've discovered.
DateTime start = datePicker1.SelectedDate.Value.Date;
DateTime finish = datePicker2.SelectedDate.Value.Date;
TimeSpan difference = finish.Subtract(start);
textBlock10.Text = difference.TotalDays.ToString();
}