So I have a toggle button as follows:
<ToggleButton
IsChecked="{Binding IsButtonChecked, Mode=OneWay}"
Command="{Binding DoNothing}"
CommandParameter="{Binding ServerViewModel}"
Content="Click Me!"></ToggleButton>
The initial value of IsButtonChecked = false
When I click the toggle button the ICommand properly fires (which is bound to a RelayCommand) and this command returns false for CanExecute. The state of the WPF ToggleButton is now Checked=true, however the backed model is still IsButtonChecked = false. Why did the UI update to a checked state, even though the bound property hasn't?
Side Note
The only way I've been able to prevent the UI from updating is creating an inverse property IsButtonNotChecked. I then bind that property to IsEnabled in the XAML. This prevents button clicks from occurring if the state is currently enabled.