I'm trying to clean up some of my xaml in my views by moving a lot of the DataGrid styles into a ResourceDictionary. One of the things I'd like to move is the ContextMenu that is bound to some commands in the ViewModel. However, when I move the context menu to the ResourceDictionary, the commands are are never firing anymore, and I can't figure out why.
I've defined the ContextMenu in the DataGridRow style so that when the user right clicks on the columnheader, no ContextMenu is shown... it will only be shown they right click on a row. Am I doing something wrong here?
FYI I'm using VS 2010 RTM if that makes a difference.
<Style x:Key="DataGridRowStyle" TargetType="{x:Type DataGridRow}">
<Setter Property="Height" Value="20"/>
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu>
<MenuItem Header="New"
Command="{Binding RelativeSource={RelativeSource
AncestorType=DataGrid}, Path=DataContext.NewCommand}">
<MenuItem.Icon>
<Image Source="/Images/DocumentWhite(32N).png"
Width="16"
Height="16"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Open"
Command="{Binding RelativeSource={RelativeSource
AncestorType=DataGrid}, Path=DataContext.OpenCommand}">
<MenuItem.Icon>
<Image Source="/Images/FolderOpenYellow(32N).png"
Width="16"
Height="16"/>
</MenuItem.Icon>
</MenuItem>
<MenuItem Header="Delete"
Command="{Binding RelativeSource={RelativeSource
AncestorType=DataGrid}, Path=DataContext.DeleteCommand}">
<MenuItem.Icon>
<Image Source="/Images/Delete(32N).png"
Width="16"
Height="16"/>
</MenuItem.Icon>
</MenuItem>
</ContextMenu>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{StaticResource hoverGradient}"/>
</Trigger>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Background" Value="{StaticResource BtnOverFill}"/>
</Trigger>
</Style.Triggers>
</Style>