title: CanExecute Logic for DelegateCommand
body: <p><strong>Update:</strong> The focus became MVVM instead of the actual question so I'm updating it.</p>
  
  <p>I'm having a problem with <code>CanExecute</code> for <code>DelegateCommand</code>. It doesn't update before I call <code>RaiseCanExecuteChanged</code>, is this the desired behavior?</p>
  
  <p><img src="https://i.stack.imgur.com/PRPFg.png" alt="enter image description here"></p>
  
  <p>I uploaded a simple sample project reproducing this problem here : <a href="http://dl.dropbox.com/u/39657172/DelegateCommandProblem.zip" rel="noreferrer">http://dl.dropbox.com/u/39657172/DelegateCommandProblem.zip</a></p>
  
  <p>The problem is this, I have two <code>Buttons</code> like this. One is Binding <code>Command</code> to a <code>RelayCommand</code> implementation and the other is binding to the Prism implementation of <code>DelegateCommand</code></p>
  
  <pre><code>&lt;Button Command="{Binding DelegateSaveCommand}"/&gt;
  &lt;Button Command="{Binding RelaySaveCommand}"/&gt;
  </code></pre>
  
  <p>The ViewModel <code>ICommands</code></p>
  
  <pre><code>DelegateSaveCommand = new DelegateCommand(Save, CanSaveDelegate);
  RelaySaveCommand = new RelayCommand(param =&gt; Save(), param =&gt; CanSaveRelay);
  </code></pre>
  
  <p>and the <code>CanExecute</code> method/predicate</p>
  
  <pre><code>public bool CanSaveDelegate()
  {
      return HasChanges;
  }
  public bool CanSaveRelay
  {
      get { return HasChanges; }
  }
  </code></pre>
  
  <p>Both are using the property <code>HasChanges</code>. When <code>HasChanges</code> is updated, only the <code>CanSaveRelay</code> updates. Is this the way it's meant to be?</p>