Как использовать из ContextMenu в gridCell? - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть 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>

в CodeBehind ia есть:

   if (b.ContextMenu != null && b.ContextMenu.IsOpen == false)
               {
                    b.ContextMenu.PlacementTarget = b;
                    b.ContextMenu.Placement = System.Windows.Controls.Primitives.PlacementMode.Bottom;
                   ContextMenuService.SetPlacement(b, System.Windows.Controls.Primitives.PlacementMode.Bottom);
                   b.ContextMenu.IsOpen = true;//I have error in this Line
                }

Я использую из моего управления в ячейке DataGrid ... когда я нажимаю на мою кнопку, я получаю сообщение об ошибке в этой строке

 b.ContextMenu.IsOpen = true;

«ContextMenu» не может иметь логического или визуального родителя

как я могу решить эту ошибку

1 Ответ

0 голосов
/ 02 февраля 2012

Образец рабочего приложения, надеюсь, это даст вам необходимую подсказку ...

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...