Pole wyboru TriState - jak zmienić kolejność stanów

Mam aplikację CheckBox w mojej aplikacji, która używa trybu TriState. Normalne zachowanie tego trybu wydaje się być cykliczne między wartością null, false, true.

Chciałbym zmienić to zachowanie, tak aby zmieniało się między wartością null, true, false.

Jak najlepiej to zrobić?

Próbowałem dodać program obsługi kliknięć podobny do tego:

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;
    }

}

Ale wydaje się, że całkowicie wyłącza to pole wyboru. Jestem pewien, że brakuje mi czegoś, co powinno być oczywiste.

questionAnswers(5)

yourAnswerToTheQuestion