title: WPF MVVM CanExecute method implementation problem
body: <p>I am trying to implement a WPF MVVM application. And I am a beginner in this platform. All I need is to implement a CanExecute method for my SaveCommand</p>
  
  <p>Here is the code</p>
  
  <p>WPF XML Code</p>
  
  <pre><code>        &lt;Canvas Height="283" Name="canvas1" Width="321"&gt;
              &lt;Label Canvas.Left="6" Canvas.Top="6" Content="First Name" Height="25" Width="91" /&gt;
              &lt;Label Canvas.Left="6" Canvas.Top="37" Content="Last Name" Height="25" Width="91" /&gt;
              &lt;TextBox Canvas.Left="103" Canvas.Top="10" Height="21"  Width="199" Text="{Binding Path=FirstName, UpdateSourceTrigger=PropertyChanged}"/&gt;
              &lt;TextBox Canvas.Left="103" Canvas.Top="37" Height="21"  Width="199" Text="{Binding Path=LastName, UpdateSourceTrigger=PropertyChanged}"/&gt;
              &lt;Button Canvas.Left="228" Canvas.Top="241" Content="Save" Height="23" Width="74" Command="{Binding SaveCommand}" /&gt;
              &lt;TextBlock Canvas.Left="28" Canvas.Top="110" Height="19" Width="259" Text="{Binding Path=FullName}"/&gt;
          &lt;/Canvas&gt;
  </code></pre>
  
  <p>C# ViewModel code</p>
  
  <pre><code>    public CustomerViewModel(IEventAggregator eventAggregator, IUnityContainer container, ILoggerFacade logger)
          : base(eventAggregator, container, logger)
      {
          logger.Log("View Model Initialized", Category.Debug, Priority.None);
          InitializeCommands();
      }
  
      public DelegateCommand&lt;object&gt; SaveCommand { get; set; }
  
      private string firstName;
  
      public string FirstName
      {
          get { return firstName; }
          set { 
              firstName = value;
              RaisePropertyChanged("FirstName");
          }
      }
  
      private string lastName;
  
      public string LastName
      {
          get { return lastName; }
          set { 
              lastName = value;
              RaisePropertyChanged("LastName");
          }
      }
      private string fullName;
  
      public string FullName
      {
          get { return fullName; }
          set { 
              fullName = value;
              RaisePropertyChanged("FullName");
          }
      }
  
  
      private void InitializeCommands()
      {
          SaveCommand = new DelegateCommand&lt;object&gt;(OnSaveCommand, CanSaveExcute);
  
      }
      private bool CanSaveExcute(object obj)
      {
          if (string.IsNullOrEmpty(firstName) || string.IsNullOrEmpty(lastName))
              return false;
          return true;
      }
  
      private void OnSaveCommand(object obj)
      {
          FullName = FirstName + " " + LastName;
      }
  </code></pre>
  
  <p>Without the can CanSaveExcute it works fine. After setting CanSaveExcute the button remains disable and does not enable on text change. As far as I have learned this is the way to go.</p>
  
  <p>Please Show me what I am doing wrong.</p>
  
  <p>Thanks </p>