TriState Checkbox - como alterar a ordem dos estados

Eu tenho um CheckBox no meu aplicativo que está usando o modo TriState. O comportamento normal desse modo parece ser o ciclo entre null, false, true.

Eu gostaria de mudar este comportamento para que ele ciclos entre null, true, false.

Qual é a melhor forma de fazer isso?

Eu tentei adicionar um manipulador de cliques semelhante a este:

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

}

Mas isso parece desabilitar totalmente a caixa de seleção. Tenho certeza que estou sentindo falta de algo que deveria ser óbvio.

questionAnswers(5)

yourAnswerToTheQuestion