Hi.
I can propose this solution:
1. Move context menu to the DataGrid Resources and put relativesource binding.
2. Assign context menu to the DataGridRow using DataGrid.ItemContainerStyle.
3. Change Ass_Game handler accordingly.
4. Remove dgData_MouseRightButtonUp event handler
See xaml example below:
<my:DataGrid AutoGenerateColumns="False" Margin="12,12,26,105" Name="dataGrid1" >
<my:DataGrid.Resources>
<ContextMenu x:Key="contextMenu">
<MenuItem Header="Add" Click="Ass_Game"
Tag="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ContextMenu}}, Path=PlacementTarget.Item}">
</MenuItem>
</ContextMenu>
</my:DataGrid.Resources>
<my:DataGrid.Columns>
<my:DataGridTemplateColumn Header="Icon" Width="50" IsReadOnly="True" >
<my:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Source="{Binding Path=ImgPath}" Width="20" Height="20"/>
</DataTemplate>
</my:DataGridTemplateColumn.CellTemplate>
</my:DataGridTemplateColumn>
<my:DataGridTextColumn Header="Position" Binding="{Binding Path=PO}" />
<my:DataGridTextColumn Header=" Name" Binding="{Binding Path=NA}" />
<my:DataGridTextColumn Header="Gender" Binding="{Binding Path=GE}" />
<my:DataGridTextColumn Header="Status" Binding="{Binding Path=ST}" />
<my:DataGridTextColumn Header="Machine" Binding="{Binding Path=MA}" />
</my:DataGrid.Columns>
<my:DataGrid.ItemContainerStyle>
<Style>
<Setter Property="my:DataGridRow.ContextMenu" Value="{StaticResource ResourceKey=contextMenu}"></Setter>
</Style>
</my:DataGrid.ItemContainerStyle>
</my:DataGrid>
Ass_Game Handler example:
private void Ass_Game(object sender, RoutedEventArgs e)
{
MenuItem item = sender as MenuItem;
if (item == null)
{
return;
}
DataRowView view = item.Tag as DataRowView;
if (view == null)
{
return;
}
MessageBox.Show(view["NA"].ToString());
}
Have fun!!