Silverlight ContextMenuService共享多个控件的菜单

时间:2011-07-21 10:13:27

标签: silverlight contextmenu

我正在为我们的项目构建Silverlight和WPF客户端。

当我尝试为控件分配上下文菜单时,在我看来,上下文菜单一次只能分配给一个控件,这是真的吗?

E.g。当我画几行时

ContextMenu contextMenu = CreateLineMenu();

for (int i = 0; i < Points.Count - 1; i++)
        {
            Line l = new Line();
            ...
            canvas.Children.Add(l);
            ContextMenuService.SetContextMenu(l, contextMenu);
            }
        }

该菜单仅适用于最后添加的行。

1 个答案:

答案 0 :(得分:1)

单个上下文菜单一次只能分配给一个父对象,因为它刚刚添加到该子项下的可视树中(并且在SL / WPF中没有可视元素可以有多个父对象)。

如果你看看如何在XAML中定义上下文菜单,这将变得更加清晰。

要共享上下文菜单的一个实例,您需要动态分配它(例如,单击鼠标右键或其他事件时)。

这似乎是定义上下文菜单的一种非常低效的方式,所以我确信其他人已经创建了分享它们的通用方法...继续搜索(我会)。