Я робив це для RibbonToggleButtons, але, можливо, це те саме для звичайних ToggleButtons.
Я прив’язав IsChecked для кожної кнопки до значення перерахунку "mode", використовуючи EnumToBooleanConverter звідси. Як прив'язати RadioButtons до enum? (Вкажіть значення перерахунку для цієї кнопки за допомогою ConverterParameter. У вас має бути одне значення перерахунку для кожної кнопки)
Тоді для запобігання зняття галочки з кнопки, яка вже була перевірена, введіть це у свій код позаду події Click для кожної кнопки 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;
}
}
}