I've created **RichTextBox** control with **Menu** at the top side of **Window**. The **MenuItems** call Commands - It works perfectly. Then I try to create ContextMenu in the **RichTextBox** and want to call the same commands like in **MenuItems**.
So that, I bind the ContextMenu in the same way like **MenuItems** but it throws the **NullReferenceException**.

What can be the reason. How should I bind the Command to the ContextMenu?? 

Below are the parts of my code

MenuItem code:

```
<MenuItem Name="FontSettings" Header="Font settings" Command="{Binding FontSettingsCommand}" CommandParameter="{Binding ElementName=MainRichTbx}" />

```

RichTextBox code:

```
  <RichTextBox Name="MainRichTbx" TextBlock.LineHeight="0.1" Margin="5" >
             <RichTextBox.ContextMenu>
                 <ContextMenu>
                     <MenuItem Header="Font settings" Command="{Binding FontSettingsCommand}" CommandParameter="{Binding ElementName=MainRichTbx}" />
                 </ContextMenu>
             </RichTextBox.ContextMenu> 
   </RichTextBox>

```

That command which I want to execute:

> 
> 
> ```
>   private ICommand _FontSettingsCommand;
>           public ICommand FontSettingsCommand
>           {
>               get
>               {
>                   if (_FontSettingsCommand == null)
>                   {
>                       _FontSettingsCommand = new RelayCommand(
>                           argument => EditorFormat.SetFont(argument),
>                           argument => true
>                           );
>                   }
>                   return _FontSettingsCommand;
>               }
>           }
> 
> ```
> 
> 

The method which I call within the Command:

```
public static void SetFont(object control)
    {
        FontDialog fontDialog = new FontDialog();

        if (fontDialog.ShowDialog() == DialogResult.OK)
        {
            (control as System.Windows.Controls.RichTextBox).FontFamily = new System.Windows.Media.FontFamily(fontDialog.Font.Name);
            (control as System.Windows.Controls.RichTextBox).FontSize = fontDialog.Font.Size;
            (control as System.Windows.Controls.RichTextBox).FontStyle = fontDialog.Font.Italic ? FontStyles.Italic : FontStyles.Normal;
            (control as System.Windows.Controls.RichTextBox).FontWeight = fontDialog.Font.Bold ? FontWeights.Bold : FontWeights.Regular;
        }
    }

```

And The RelayCommand class

```
   class RelayCommand : ICommand
     {
         private readonly Action<object> _Execute;
         private readonly Func<object, bool> _CanExecute;

         public RelayCommand(Action<object> execute, Func<object, bool> canExecute)
         {
             if (execute == null) throw new ArgumentNullException("execute");
             _Execute = execute;
             _CanExecute = canExecute;
         }

         public bool CanExecute(object parameter)
         {
             return _CanExecute == null ? true : _CanExecute(parameter);
         }

         public event EventHandler CanExecuteChanged
         {
             add
             {
                 if (_CanExecute != null) CommandManager.RequerySuggested += value;
             }
             remove
             {
                 if (_CanExecute != null) CommandManager.RequerySuggested -= value;
             }
         }

         public void Execute(object parameter)
         {
             _Execute(parameter);
         }
     }

```