2013-05-16 18 views
17

CheckBox denetleme ile ilgili kodu çalıştırmadan bir yol var mı? Sadece görsel görünüm için.Onay kutusunu ayarlamak nasıl kullanılır? Olayı yükseltmeden denetlenenler

Düzenleme:

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

Ben normalCheckBox.IsChecked=true; ayarlamak istediğiniz düşünün ama olayı yükseltmeden. Mümkün mü?

+2

Sorunuzu bir kez daha okuyun, cevaplamak için bir zihin okuyucusunu gerektirir – makc

+2

Checked etkinliğine abone olmasına rağmen, Checked etkinliğini yükseltmeden bir onay kutusunun "Checked" özelliğini program aracılığıyla ayarlamak ister. –

+0

Wow @MatthewWatson bir akıl okuyucusudur;) – makc

cevap

31

Olay işleyicisini ayırmak, IsChecked özelliğini ayarlamak ve sonra yeniden bağlayın.

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

Lanet olası FGITW :(... +1 – phadaphunk

+0

Çok teşekkür ederim efendim! – Sturm

+0

Eksi ve artı ile ne var? Ben anlamıyorum. – Sobiaholic

0

siz "_Checked" olayı yükseltmeden denetlenen durumunu değiştirerek bahsediyorsan, muhtemelen olayı atlamak ya da değil bunu anlatmak için bir param ile olay işleyicisi geçersiz kılmak gerekir.

İlgili cevap: Change Checkbox value without raising event

5

yerine Checked ait Click olayı kullanmak ve aşağıdaki gibi onay kutusu durumunu kullanabilirsiniz:

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

Sonra bu olay normalCheck.IsChecked = true; kullanarak gündeme olmayacak . Sadece bir tıklama ile yükseltilecektir.

NOT: Boş birleştirme işleci (??) gereklidir, çünkü IsChecked, null olabilecek bir bool? türünü döndürür.

İlgili konular