title: Context Menu items command binding WPF using MVVM
body: <p>I know this question has been asked many times in different ways in many websites and also in StackOverFlow but all the answers I found are not helping me ot to be precise I am not able to understand them and implement in my application. So I thought of putting some code from my application so that you people can help me better.</p>
  
  <p>Problem Statement : I am using a WPF DataGrid. I have added a <strong>Context Menu</strong> and I have 3 options Cut,Copy,Paste. I am using MVVM for development. I want to DataBind these options to Commands in my ViewModel. But I am unable to do the same. The context menu options are not getting data bound at all !!! </p>
  
  <p>This is my Grid Code in XAML :</p>
  
  <pre><code>&lt;custom:DataGrid  
        x:Name="DataGrid_Standard"   
        Grid.Row="1" Grid.Column="1"   
        AutoGenerateColumns="False"                                                           
        IsSynchronizedWithCurrentItem="True"   
        Background="Transparent"
        ItemsSource="{Binding FullGridData}" 
        ItemContainerStyle="{StaticResource defaultRowStyle}"
        ColumnHeaderStyle="{StaticResource DefaultColumnHeaderStyle}"                         
        Grid.ColumnSpan="2"&gt;
  </code></pre>
  
  <p>Then I have a ContextMenu and a Style for Header Element</p>
  
  <pre><code>&lt;ContextMenu x:Key="columnHeaderMenu"&gt;
     &lt;MenuItem Command="{Binding CutCommand}"
               Header="Test" /&gt;
     &lt;MenuItem Header="Copy"/&gt;
     &lt;MenuItem Header="Paste"/&gt;
  &lt;/ContextMenu&gt;
  &lt;Style TargetType="{x:Type custom:DataGridColumnHeader}" x:Key="DefaultColumnHeaderStyle"&gt;
      &lt;Setter Property="ContextMenu" Value="{DynamicResource columnHeaderMenu}" &gt;
  &lt;/Style&gt;
  </code></pre>
  
  <p>This line goes in my constructor</p>
  
  <pre><code>public Window1()
  {            
     this.DataContext = new AppData();
  }
  </code></pre>
  
  <p>This code goes in my AppData class:</p>
  
  <pre><code>public class AppData  
  { 
      private IList&lt;GridData&gt; fullGridData = new ObservableCollection&lt;GridData&gt;();&lt;br&gt; 
      public IList&lt;GridData&gt; FullGridData
      {
          get { return fullGridData; }
          set { fullGridData = value; }
      }
  
      private DelegateCommand&lt;object&gt; cutCommand;
      public DelegateCommand&lt;object&gt; CutCommand
      {
          get
          {
              if (cutCommand == null)
              {
                  cutCommand = new DelegateCommand&lt;object&gt;(CutColumn);
              }
              return cutCommand;
          }
      }
  
      private void CutColumn(object obj)
      {
          //some code goes here
      }   
  }
  </code></pre>
  
  <p>** I want to know exactly where am I doing wrong?? Why is the DataBinding not happening??
  Please help me regarding this. Please provide me the sample code or modification in my present code from which I can achieve it. **</p>