2013-05-16 10 views
17

Gibt es eine Möglichkeit, die CheckBox zu überprüfen, ohne den mit der Prüfung verbundenen Code auszuführen? Nur für das visuelle Erscheinungsbild.Wie setze ich checkbox.isChecked, ohne das Ereignis zu erhöhen

Edit:

private void normalCheck_Checked(object sender, RoutedEventArgs e) 
{ 
    normal(); 
} 

Stellen Sie sich vor, dass ich die normalCheckBox.IsChecked=true; festlegen möchten, aber ohne das das Ereignis auslöst. Ist das möglich?

+2

Bitte lesen Sie Ihre Frage erneut, es erfordert ein Gedankenleser, um es zu beantworten – makc

+2

Er möchte die "Checked" -Eigenschaft eines Kontrollkästchens, ohne es das Checked-Ereignis ausgelöst, obwohl er das Checked-Ereignis abonniert hat. –

+0

Wow @MatthewWatson Sie sind ein Gedankenleser;) – makc

Antwort

31

Eine Möglichkeit wäre, den Event-Handler zu lösen, die Eigenschaft IsChecked zu setzen und dann wieder anzuhängen.

myCheckbox.Checked -= myCheckbox_Checked; 
myCheckbox.IsChecked = true; 
myCheckbox.Checked += myCheckbox_Checked; 
+1

Verdammt Sie FGITW :(... +1 – phadaphunk

+0

Vielen Dank Herr! – Sturm

+0

Was ist mit dem Minus und Plus? Ich verstehe es nicht. Sieht sehr interessant tho. – Sobiaholic

0

Wenn Sie das überprüft den Status zu ändern, ohne die Erhöhung der „_Checked“ Ereignis beziehen sind, müssen Sie wahrscheinlich den Event-Handler mit einem param außer Kraft setzen, es zu sagen, das Ereignis oder die nicht zu überspringen.

Verwandte Antwort: Change Checkbox value without raising event

5

könnten Sie verwenden das Click Ereignis statt Checked und den Zustand der Checkbox wie unten:

private void normalCheck_Click(object sender, RoutedEventArgs e) 
{ 
    if (normalCheck.IsChecked ?? false) { normal(); } 
} 

Dann wird dieses Ereignis nicht durch die Verwendung normalCheck.IsChecked = true; angehoben werden . Es wird nur durch einen Klick ausgelöst.

HINWEIS: Der Nullkoaleszenzoperator (??) ist erforderlich, da IsChecked einen bool?-Typ zurückgibt, der null sein könnte.

Verwandte Themen