When you toggle the control with the mouse, the IsChecked property changes (as you'd expect), but anything bound to the isChecked property loses its binding.
In ToggleSwitchBase.cs OnClick() method, you shouldn't set IsChecked directly. You should use this approach:
This changes the value of IsChecked, without removing any bindings on the dependency property.
The description of the SetCurrentValue method says:
This method is used by a component that programmatically sets the value of one of its own properties without disabling an application's declared use of the property. The SetCurrentValue method changes the effective value of the property, but existing
triggers, data bindings, and styles will continue to work.