2012-05-04 85 views
0

我試圖以編程方式將ContextMenu添加到超鏈接。我搜索的文檔和論壇,似乎是正確的解決方案應該是這樣的:WP7 - 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事件根本不觸發。

任何人都可以幫到我嗎?謝謝。

回答

0

我剛剛在閱讀由Daniel Vaughan編寫的Windows Phone 7.5 Unleashed圖書時找到了答案。我的問題是我需要在RichTextBox中添加超鏈接,並且我只能使用Inline來顯示文本。超鏈接是一個內聯,但不支持ContextMenu。正如蒂姆所說,我需要使用HyperlinkBut​​ton。解決方案是有一個叫做InlineUIContainer的類。所以,這

var inline = new InlineUIContainer { Child = SomeHyperlinkButton } 

爲我伎倆。

1

您不能在Hyperlinks上做ContextMenu s。不過,您可以在HyperlinkButton上執行此操作。我不完全確定原因,但它確實有效。取決於你想要做什麼,HyperlinkButton可能已經是你想要的(Hyperlink通常只用在文本文件中)。

+0

我只能使用超鏈接,因爲鏈接是在一個文本塊內。所以很傷心,我只能用它與按鈕... – gjulianm