如何在 gridCell 中使用 ContextMenu?

发布于 2025-01-02 12:06:04 字数 1198 浏览 1 评论 0原文

我有一个像这样的 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 中有:

   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”不能有逻辑或视觉父级

我如何解决这个错误

I have a CustomControl like this:

        <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>

in CodeBehind ia have :

   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
                }

I use from my conrol in a DataGrid Cell ...when i click on my button i get an error in this line

 b.ContextMenu.IsOpen = true;

"ContextMenu" cannot have logical or visual parent

how can i resolve this erorr

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

很酷又爱笑 2025-01-09 12:06:04

一个工作应用程序的示例,希望这能为您提供所需的线索......

<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>

A sample of working app, hope this gives you required clue...

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文