Eu fiz isso para RibbonToggleButtons, mas talvez seja o mesmo para ToggleButtons regulares.
Liguei o IsChecked para cada botão a um valor de enum "mode" usando EnumToBooleanConverter daqui Como vincular RadioButtons a um enum? (Especifique o valor de enum para este botão usando o ConverterParameter. Você deve ter um valor de enum para cada botão)
Para evitar desmarcar um botão que já esteja marcado, coloque isso no seu código para o evento Click de cada um dos RibbonToggleButtons:
private void PreventUncheckRibbonToggleButtonOnClick ( object sender, RoutedEventArgs e ) {
// Prevent unchecking a checked toggle button - so that one always remains checked
// Cancel the click if you hit an already-checked button
var button = (RibbonToggleButton)sender;
if( button.IsChecked != null ) { // Not sure why checked can be null but that's fine, ignore it
bool notChecked = ( ! (bool)button.IsChecked );
if( notChecked ){ // I guess this means the click would uncheck it
button.IsChecked = true;
}
}
}