Tôi đã làm điều này cho RibbonToggleButtons, nhưng có lẽ nó cũng giống như đối với ToggleButtons thông thường.
Tôi đã liên kết IsChecked cho mỗi nút với một giá trị enum "mode" bằng EnumToBooleanConverter từ đây Làm cách nào để liên kết RadioButtons với một enum? (Chỉ định giá trị enum cho nút này bằng cách sử dụng ConverterParameter. Bạn nên có một giá trị enum cho mỗi nút)
Sau đó, để ngăn việc bỏ chọn một nút đã được chọn, hãy đặt nút này vào mã của bạn phía sau cho sự kiện Click cho mỗi 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;
}
}
}