0

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

我已经完成了

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

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

4

1 回答 1

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;
于 2013-08-23T15:05:43.627 回答