2012-05-07 16 views
0

小さなデモプログラムが以下に含まれています。問題を再現するには、日付を選択し、[BlackoutDate]ボタンをクリックします。私のシステムでは、ArgumentOutOfRange例外が発生します。SelectedDateを使用してBlackoutDatesに追加

これを修正する方法の提案はありますか?

XAML:

<Window x:Class="CalendarBlackoutDate.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <StackPanel> 
     <Calendar Name="calendar"/> 
     <Button Name="blackoutDateButton" Content="BlackoutDate" Click="blackoutDateButton_Click"/> 
    </StackPanel> 
</Window> 

C番号:

using System.Windows; 
using System.Windows.Controls; 

namespace CalendarBlackoutDate 
{ 
    public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 

     private void blackoutDateButton_Click(object sender, RoutedEventArgs e) 
     { 
      calendar.BlackoutDates.Add(
       new CalendarDateRange(
        calendar.SelectedDate.Value)); 
     } 
    } 
} 
+0

はまたcalendar.SelectedDate.Value の値であり、どのような場合には、スタックトレース –

答えて

1

ブラックアウトとして選択された日付、同じカレンダー?選択された日付はブラックアウトの日付ではありません。

calendar1.BlackoutDates.Add(
      new CalendarDateRange(
       calendar2.SelectedDate.Value)); 

<Calendar Name="calendar1"/> 
<Calendar Name="calendar2"/> 

1つのカレンダー

if (calendar1.SelectedDate == null) return; 
DateTime dtBO = (DateTime)calendar1.SelectedDate; 
calendar1.SelectedDate = null; 
calendar1.BlackoutDates.Add(new CalendarDateRange(dtBO)); 
+0

おかげBLAMを投稿してください。私は2つの別々のカレンダーを持つことを避けたいと思います。おそらく、選択した日付を保存し、日付の選択を解除し、それをブラックアウト日付に追加することができます。 – dharmatech

+0

あなたの更新された答えは問題を完全に解決します。おかげさまでBlam! – dharmatech

関連する問題