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](https://msdn.microsoft.com/en-us/magazine/dd419663.aspx#id0090030)) 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.