title: Changing the background color of a textblock in MVVM-WPF (and retaining it)
body: <p>Here is the working code i have: The text and background color property do change when I click the button (but for a micro second) and are then set back to the default text/color. Seems like RaisePropertyChanged is being triggered again and again. Can somebody help point what I am doing wrong?</p>
  
  <p>MainWindow.xaml code</p>
  
  <pre><code> &lt;Window x:Class="BuiltIn_Custom_Commands_Eg.MainWindow"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="MainWindow" Height="350" Width="525"&gt;
  &lt;Grid&gt;
      &lt;StackPanel HorizontalAlignment="Center"&gt;
          &lt;TextBlock Text="{Binding txtblck_text, StringFormat=Default: {0}}" Padding="10" FontStyle="Italic" Background="{Binding txtblck_color}"/&gt;
          &lt;Button Content="Change Color" Width="100" Height="30" Margin="20" Command="{Binding OkCommand}" /&gt;
      &lt;/StackPanel&gt;
  &lt;/Grid&gt;
  </code></pre>
  
  <p></p>
  
  <p>ViewModel Code:</p>
  
  <pre><code>class Example_ViewModel : ViewModelBase
  {
      #region Properties
      private string _txtblck_text;
      private Brush _txtblck_color;
      public ICommand OkCommand {get; set;}
  
      public string txtblck_text
      {
          get { return _txtblck_text; }
          set 
          { 
              _txtblck_text = value;
              RaisePropertyChanged("txtblck_text");
          }
      }
  
      public Brush txtblck_color
      {
          get { return _txtblck_color; }
          set
          {
              _txtblck_color = value;
              RaisePropertyChanged("txtblck_color");
          }
      }
      #endregion
  
      #region Constructor
      public Example_ViewModel()
      {
          OkCommand = new myCommand(myOkExecute, myCanOkExecute);
      }
      #endregion
  
      private void myOkExecute(object parameter)
      {
          txtblck_color = Brushes.CadetBlue;
          //RaisePropertyChanged("txtblck_color");
  
          txtblck_text = "You Clicked me!!!";
          //RaisePropertyChanged("txtblck_text");
      }
  
      private bool myCanOkExecute(object parameter)
      {
          txtblck_color = Brushes.Yellow;
          txtblck_text = "You havent clicked me!!!";
          return true;
      }
  }
  </code></pre>