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 on Hyperlinksを実行することはできません。ただし、でそれを行うことができますHyperlinkButton。正確な理由はわかりませんが、うまくいきます。あなたがしようとしていることに応じて、HyperlinkButtonとにかくあなたが望んでいたかもしれません(Hyperlink通常、テキストのドキュメント内でのみ使用されます)。

于 2012-05-04T20:53:02.993 に答える
0

Daniel Vaughan による Windows Phone 7.5 Unleashed の本を読んでいるときに、その答えを見つけました。私の問題は、RichTextBox にハイパーリンクを追加する必要があり、インラインを使用してテキストを表示することしかできないことでした。ハイパーリンクはインラインですが、ContextMenu をサポートしていません。Tim が提案したように、HyperlinkBut​​ton を使用する必要がありました。解決策は、 InlineUIContainerというクラスがあることです。したがって、この

var inline = new InlineUIContainer { Child = SomeHyperlinkButton }

私のためにトリックを作りました。

于 2012-05-25T14:55:40.077 に答える