title: RelayCommand CanExecute not working when parameter passed with async lambda
body: <p>I have the following command which works:</p>
  
  <pre class="lang-cs prettyprint-override"><code>private ICommand _AddNewCommand;
  public ICommand AddNewCommand
  {
      get
      {
          if (_AddNewCommand == null)
          {
              _AddNewCommand = new RelayCommand(async () =&gt;
                                                {
                                                    await AddNewAsync();
                                                }, AddNewCommand_CanExecute);
          }
          return _AddNewCommand;
      }
  }
  </code></pre>
  
  <p>The button bound to this is correctly enabled/disabled according to the <code>AddNewCommand_CanExecute</code> method result.</p>
  
  <p>However, if I want to pass some parameter into my <code>AddNewAsync()</code> method I do this:</p>
  
  <pre class="lang-cs prettyprint-override"><code> _AddNewCommand = new RelayCommand&lt;object&gt;(async obj =&gt;
                                            {
                                                await AddNewAsync(obj);
                                            }, AddNewCommand_CanExecute());
  </code></pre>
  
  <p>Note that <code>AddNewCommand_CanExecute</code> has to be changed to <code>AddNewCommand_CanExecute()</code>.</p>
  
  <p>However, when I do this, the bound button is always enabled even though <code>AddNewCommand_CanExecute()</code> should be returning false (given that it hasn't changed between the two).</p>
  
  <p>What's going on here?</p>