2012-05-04 2 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에 하이퍼 링크를 추가해야한다는 것이었고 텍스트 만 표시 할 수 있습니다. 하이퍼 링크는 인라인이지만 ContextMenu를 지원하지 않습니다. Tim이 제안한 것처럼 HyperlinkButton을 사용해야했습니다. 해결책은 InlineUIContainer이라는 클래스가 있다는 것입니다. 그래서,이

var inline = new InlineUIContainer { Child = SomeHyperlinkButton } 

나를 위해 트릭을 만들었습니다.

1

HyperlinksContextMenu을 입력 할 수 없습니다. 그래도 HyperlinkButton에서 할 수 있습니다. 나는 그 이유를 정확하게 모르지만, 효과가있다. 어떤 일을 하느냐에 따라 HyperlinkButton은 원했던 것일 수도 있습니다. (Hyperlink은 대개 텍스트 문서에서만 사용됩니다.

+0

하이퍼 링크는 링크가 텍스트 블록 안에 있기 때문에 사용할 수 있습니다. 슬프지만 Buttons에서만 사용할 수 있습니다. – gjulianm

관련 문제