title: Proper usage of MVVM ICommand in WinForms
body: <p>I'm using <code>MVVM</code> in <code>WinForms</code> application (I don't know WPF). I'm also using <a href="http://www.codeproject.com/Articles/274982/Commands-in-MVVM" rel="nofollow">Dave Kerr library</a> it is very good wrapper around ICommand. It supports asynchronous command, event binding and more.</p>
  
  <p>In his examples he is using <code>XAML</code>:</p>
  
  <pre><code>&lt;Button Content="Asynchronous Command" Command="{Binding AsyncCommand1}" /&gt;
  </code></pre>
  
  <p>I'm using:</p>
  
  <pre><code>public class Class1 : ViewModel
  {
      private AsynchronousCommand _command;
      public BinaryData BinaryData;
  
      public Class1(Foo config)
      {
          _command = new AsynchronousCommand(() =&gt;
          {
              BinaryData = ...
          });
  
          _command.DoExecute(null);
      }
  
      public AsynchronousCommand Command
      {
          get { return _command; }
      }
  }
  
  _vm = new Class1(_config);
  _vm.Command.Executed += Command_Executed;
  </code></pre>
  
  <p>and in <code>Command_executed</code></p>
  
  <pre><code>var response = _vm.BinaryData;
  </code></pre>
  
  <p>Is it OK? Or there is some <code>.Net</code> class that do the actually binding like real <code>Button</code>?</p>