我正在为我们的项目构建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);
}
}
该菜单仅适用于最后添加的行。
答案 0 :(得分:1)
单个上下文菜单一次只能分配给一个父对象,因为它刚刚添加到该子项下的可视树中(并且在SL / WPF中没有可视元素可以有多个父对象)。
如果你看看如何在XAML中定义上下文菜单,这将变得更加清晰。
要共享上下文菜单的一个实例,您需要动态分配它(例如,单击鼠标右键或其他事件时)。
这似乎是定义上下文菜单的一种非常低效的方式,所以我确信其他人已经创建了分享它们的通用方法...继续搜索(我会)。