title: Strange behavior of CanExecuteChanged event
body: <p>I found a strange behavior, in a custom implementation of <code>ICommand</code> interface I have <code>RaiseCanExecuteChanged</code> method that can be invoked from outside and cause to invoke and reevalute the <code>CanExecute</code> method and change the state of the command (and button):</p>
  
  <pre><code>public void RaiseCanExecuteChanged()
  {
    if (_canExecuteChanged != null)
      _canExecuteChanged(this, EventArgs.Empty);
  }
  </code></pre>
  
  <p>However when the event was implemented as property: </p>
  
  <pre><code>public event EventHandler CanExecuteChanged;
  </code></pre>
  
  <p>it did not work and <code>CanExecuteChanged</code> was <code>null</code>. </p>
  
  <p>After changing it to </p>
  
  <pre><code>private EventHandler _canExecuteChanged;
  public event EventHandler CanExecuteChanged
  {
    add { _canExecuteChanged += value; }
    remove { _canExecuteChanged -= value; }
  }
  </code></pre>
  
  <p>it works.</p>
  
  <p>The command is bound to a button <code>Command</code> property.</p>
  
  <p>Can anyone explain this to me? Thank you.</p>