title: Relay/ICommand vs DelegateCommand -- Differences
body: <p>As far as I can tell the below code can be changed from Relay/ICommand Command to Delegate command and still bind the commands the same way!  If I am wrong what are the differences and uses of each.</p>
  
  <pre><code>private DelegateCommand something;
  public DelegateCommand Something
  </code></pre>
  
  <p>Here is the full implementation</p>
  
  <pre><code>private RelayCommand something;
  public ICommand Something
  {
      get
      {
          if (something == null)
              something = new RelayCommand(SomethingMethod, CanSomething);
          return something;
      }
  }
  
  private bool CanSomething(object parameter)
  {
      //just for readability return true
      return true;
  }
  
  private void SomethingMethod(object parameter)
  {
      using (DatabaseContext context = new DatabaseContext())      
      {
          try { }
          catch(Exception ex)
          {
              throw new ApplicationException(string.Format("Something {0} to {1}", file, directory), ex);
          }
      }
  }
  </code></pre>