TriState Checkbox - cómo cambiar el orden de los estados

Tengo un CheckBox en mi aplicación que usa el modo TriState. El comportamiento normal para este modo parece estar cambiando entre nulo, falso, verdadero.

Me gustaría cambiar este comportamiento para que alterne entre nulo, verdadero, falso.

¿Cuál es la mejor manera de hacer esto?

He intentado agregar un controlador de clic similar a esto:

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

}

Pero esto parece deshabilitar la casilla de verificación por completo. Estoy bastante seguro de que me estoy perdiendo algo que debería ser obvio.

Respuestas a la pregunta(5)

Su respuesta a la pregunta