2012-03-30 14 views
0

XAMLのSilverlightプロジェクトでは、DatePickerコントロールを含むウィンドウを作成しました。次に、SelectedDate値のウィンドウのコンストラクタを設定し、selecteddatechangedイベントのコールバック関数を定義します。

コンストラクタでselecteddateを変更した後に、このコールバック関数がimmediatellyと呼ばれるのはなぜですか?
私はそれがコンストラクタの最初の初期化の後で即座にではなく、日付を変更するユーザの後にのみ呼び出されると思っていました。DatePicker SelectedDateChangedイベント

public MyWindow() 
{ 
    InitializeComponent(); 
    this.datePicker.SelectedDate = DateTime.Today; 
    this.datePicker.SelectedDateChanged += new EventHandler<SelectionChangedEventArgs>(datePicker_SelectedDateChanged); 
} 

void datePicker_SelectedDateChanged(object sender, SelectionChangedEventArgs e) 
{ 
    ... 
} 

答えて

0

なぜですか?ブレークポイントを入れ、送信者オブジェクトを確認します。それは、何かが変更イベントを引き起こしている理由の手がかりを与えるかもしれません。

解決に関しては、送信者が一意である場合、その送信者を無視するようにコードを書くことができます。問題を解決します。

+0

public MyWindow() { InitializeComponent(); this.datePicker.SelectedDate = new DateTime(1950,1,1); this.datePicker.SelectedDateChanged + =新しいイベントハンドラ(datePicker_SelectedDateChanged);ブレークポイントの送信者に } 無効datePicker_SelectedDateChanged(オブジェクト送信者、SelectionChangedEventArgs E) {// は、1950年1月1日午後12時00分○○秒 } – Lukas

+0

1950に日付の初期化がInitializeComponentの(への呼び出しの前に起こることができる)でしょうか? – OmegaMan

+0

あなたはこれを意味しましたか? 'public MyWindow() { this.datePicker.SelectedDate = new DateTime(1950,1,1); InitializeComponent(); this.datePicker.SelectedDateChanged + =新しいイベントハンドラ(datePicker_SelectedDateChanged); } ' しかし、これはnull参照例外を引き起こします... – Lukas