2009-08-27 21 views
10

Uygulamamda TriState modunu kullanan bir CheckBox var. Bu mod için normal davranış boş, yanlış, doğru arasında bisiklet gibi görünüyor.TriState Onay Kutusu - durumların sırasının nasıl değiştirileceği

Bu davranışı, null, true, false arasındaki döngüleri değiştirecek şekilde değiştirmek istiyorum.

Bunu yapmanın en iyi yolu nedir?

Ben buna benzer bir tık işleyicisi ekleyerek denedim:

void cb_Click(object sender, RoutedEventArgs e) 
{ 
    if (((CheckBox)e.Source).IsChecked.HasValue == false) 
    { 
     ((CheckBox)e.Source).IsChecked = true; 
     return; 
    } 

    if (((CheckBox)e.Source).IsChecked == true) 
    { 
     ((CheckBox)e.Source).IsChecked = false; 
     return; 
    } 

    if (((CheckBox)e.Source).IsChecked == false) 
    { 
     ((CheckBox)e.Source).IsChecked = null; 
     return; 
    } 

} 

Ama bu tamamen onay kutusunu devre dışı gibi görünüyor. Eminim ki belli olması gereken bir şey eksik.

Aslında son zamanlarda aynı şeyi yapmak zorunda ...

cevap

22

Ben olay işleyicisi ve varsayılan davranış sadece birbirlerinin etkilerini iptal ediyor sanırım, bu yüzden onay kutusu devre dışı görünüyor. 'dan miras aldım ve OnToggle:

geçersiz kıldım.