0

我正在尝试以编程方式将 ContextMenu 添加到超链接。我在文档和论坛中进行了搜索,似乎正确的解决方案应该是:

var link = new Hyperlink();
link.Inlines.Add(new Run() { Text = linkText });
link.FontWeight = FontWeights.Bold;
link.TargetName = linkText;
link.Click += new RoutedEventHandler(link_Click);

ContextMenu menu = new ContextMenu();
MenuItem item = new MenuItem();
item.Click += new RoutedEventHandler(CopyLink);
item.Header = "copy link";
item.Tag = linkText;
menu.Items.Add(item);
ContextMenuService.SetContextMenu(link, menu);

此代码编译并且不会抛出任何异常。我已经测试过,ContextMenu 确实已添加到超链接中。问题是它不会随时显示。我可以随时随地点击并按住链接,菜单不会出现。还尝试使用 GestureService 和 GestureListener 添加侦听器,但 Hold 事件根本不会触发。

任何人都可以帮助我吗?谢谢。

4

2 回答 2

1

你不能在ContextMenus 上做Hyperlinks。不过,您可以在HyperlinkButton. 我不完全确定原因,但它确实有效。根据您要执行的操作,HyperlinkButton可能一直是您想要的Hyperlink通常仅在文本文档中使用)。

于 2012-05-04T20:53:02.993 回答
0

我刚刚在阅读 Daniel Vaughan 的 Windows Phone 7.5 Unleashed 书时找到了答案。我的问题是我需要在 RichTextBox 中添加超链接,而我只能使用内联来显示文本。超链接是内联的,但不支持 ContextMenu。正如蒂姆建议的那样,我需要使用 HyperlinkBut​​ton。解决方案是有一个名为InlineUIContainer的类。所以这

var inline = new InlineUIContainer { Child = SomeHyperlinkButton }

为我做了伎俩。

于 2012-05-25T14:55:40.077 回答