2012-03-30 5 views
0

In meinem Silverlight-Projekt in XAML habe ich ein Fenster erstellt, das das DatePicker-Steuerelement enthält. Dann setze ich im Konstruktor des Fensters den SelectedDate-Wert und definiere die Callback-Funktion für das selectdatechanged-Event.

Warum wird diese Callback-Funktion sofort aufgerufen, nachdem selecteddate im Konstruktor geändert wurde?
Ich dachte, es wird nur aufgerufen, nachdem ein Benutzer das Datum geändert hat und nicht sofort nach der ersten Initialisierung im Konstruktor.DatePicker SelectedDateChanged-Ereignis

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

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

Antwort

0

Warum? Setzen Sie einen Haltepunkt und überprüfen Sie das Absenderobjekt. Das könnte Ihnen einen Hinweis geben, warum etwas das Change Event auslöst.

In Bezug auf eine Auflösung, wenn der Absender eindeutig genug ist, könnte Code geschrieben werden, um diesen Absender zu ignorieren; daher das Problem zu lösen.

+0

öffentlich MyWindow() { InitializeComponent(); this.datePicker.SelectedDate = new DateTime (1950,1,1); this.datePicker.SelectedDateChanged + = neuer EventHandler (datePicker_SelectedDateChanged); } Leere datePicker_SelectedDateChanged (object sender, SelectionChangedEventArgs e) { // auf Unterbrechungs Absender ist 1950.01.01 00.00.00 } – Lukas

+0

kann die Initialisierung des Datums bis 1950 geschehen vor dem Aufruf von InitializeComponent()? – OmegaMan

+0

Meinst du das? 'public MyWindow() { this.datePicker.SelectedDate = neue DateTime (1950,1,1); InitializeComponent(); this.datePicker.SelectedDateChanged + = neuer EventHandler (datePicker_SelectedDateChanged); } ' aber dies verursacht null Referenz Ausnahme ... – Lukas