C# 如何在gridCell中使用上下文菜单?

C# 如何在gridCell中使用上下文菜单?,c#,wpf,contextmenu,C#,Wpf,Contextmenu,我有这样一个CustomControl: <Button Name="b" Height="20" Click="b_Click" Content="operation" Width="60"> <Button.ContextMenu> <ContextMenu> <MenuItem Header="Copy"></MenuItem>

我有这样一个CustomControl:

        <Button Name="b"  Height="20" Click="b_Click"  Content="operation" Width="60">
         <Button.ContextMenu> 
             <ContextMenu>

                <MenuItem Header="Copy"></MenuItem>
                <MenuItem Header="cut"></MenuItem>
                <MenuItem Header="delete"></MenuItem>
            </ContextMenu>
         </Button.ContextMenu> 

        </Button>
我在DataGrid单元格中使用我的控件…当我点击我的按钮时,我在这行中得到一个错误

 b.ContextMenu.IsOpen = true;
“ContextMenu”不能具有逻辑或可视父级


我怎样才能解决这个erorr呢?

一个工作应用程序的示例,希望这能给你提供必要的线索

<DataGrid Margin="0,0,195,72" x:Name="A"> 
            <DataGrid.Resources>
                <ContextMenu x:Key="ContextMenu">
                    <MenuItem Header="Copy" Click="MenuItem_Click"></MenuItem>
                    <MenuItem Header="cut" Click="MenuItem_Click"></MenuItem>
                    <MenuItem Header="delete" Click="MenuItem_Click"></MenuItem>
                </ContextMenu>
            </DataGrid.Resources>

            <DataGrid.CellStyle>
                <Style TargetType="{x:Type DataGridCell}">
                    <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}">
                                           </Setter>
                </Style>
            </DataGrid.CellStyle>
            <DataGrid.Columns>
                <DataGridTextColumn Header="A" Binding="{Binding}">

                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>

为什么这样做:b.ContextMenu.PlacementTarget=b;b、 ContextMenu.Placement=System.Windows.Controls.Primitives.PlacementMode.Bottom;SetPlacement(b,System.Windows.Controls.Primitives.PlacementMode.Bottom);
<DataGrid Margin="0,0,195,72" x:Name="A"> 
            <DataGrid.Resources>
                <ContextMenu x:Key="ContextMenu">
                    <MenuItem Header="Copy" Click="MenuItem_Click"></MenuItem>
                    <MenuItem Header="cut" Click="MenuItem_Click"></MenuItem>
                    <MenuItem Header="delete" Click="MenuItem_Click"></MenuItem>
                </ContextMenu>
            </DataGrid.Resources>

            <DataGrid.CellStyle>
                <Style TargetType="{x:Type DataGridCell}">
                    <Setter Property="ContextMenu" Value="{StaticResource ContextMenu}">
                                           </Setter>
                </Style>
            </DataGrid.CellStyle>
            <DataGrid.Columns>
                <DataGridTextColumn Header="A" Binding="{Binding}">

                </DataGridTextColumn>
            </DataGrid.Columns>
        </DataGrid>