WPF中DiagramSurface上的Selected项的上下文菜单

时间:2013-08-23 13:15:56

标签: c# wpf user-interface telerik

我有一个UI,它是一个diagramSurface对象。 在运行应用程序时,我将一个元素(一种标签)拖放到它上面。 我想为这个对象实现一个CONTEXTMENU。

我已经完成了这个

<DiagramSurface>
     <DiagramSurface.ContextMenu>
         <ContextMenu >
                <MenuItem Header="Save" Click="MenuItem_Click"/>
         </ContextMenu>
     <DiagramSurface.ContextMenu>
</DiagramSurface>

通过这样做,我可以看到contextMenu,如果我点击对象不存在的表面。 怎么避免这个?我想只在右侧单击元素时显示上下文菜单。

1 个答案:

答案 0 :(得分:0)

正如@Viv所说(虽然我不确定他为什么不在答案中说出来),当您右键单击控件上的 时,ContextMenu会出现你把它添加到。因此,如果将其添加到DiagramSurface,则会在单击该控件上的任何位置时显示。要解决您的问题,请从DiagramSurface控件中删除声明。

现在,您需要将其添加到拖放的控件中。您可以像@Viv所说的那样在ContextMenu部分中定义Resources

<Application.Resources>
    <ContextMenu x:Key="ContextMenu">
        <MenuItem Header="Save" Click="MenuItem_Click"/>
    </ContextMenu>
</Application.Resources>

然后将其设置为代码中的拖放元素的ContextMenu

ContextMenu menu = (ContextMenu)Application.Current.FindResource("ContextMenu");
element.ContextMenu = contextMenu;