2013-06-14 3 views
0

Windows Phone 앱을 디자인하고 있습니다. 나는 RichTextBoxHyperlink 개체를 가지고 있으며, Grid입니다. Grid에는 Tap 이벤트가 있고 Hyperlink에는 Click 이벤트가 있습니다.하이퍼 링크 클릭 이벤트가 버블 링하지 않도록하십시오.

Hyperlink을 클릭하면 상위 Grid 님의 Tap 이벤트가 발생합니다. 이 문제를 어떻게 방지 할 수 있습니까?

나는 Click 핸들러에서 e.Handled을 사용하지만, RoutedEventArgs는 Windows Phone 용 Silverlight에서 처리 된 속성을 가지고 있지 않습니다 ... 나는 또한 원본 소스를 찾기 위해 논리적 트리를 걸어하려고했으나 클릭이 발생한 것으로 보인다 에서 MS.Internal.RichTextBoxView 컨트롤 (e.OriginalSource) ...

답변

1

나는 Click 처리기 자체 내에서 좋은 방법이 있다고 생각하지 않습니다. 다음 상태 관리하지만 작업 할 수 있습니다

XAML :

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0" Tap="ContentPanel_Tap_1"> 
    <RichTextBox Tap="RichTextBox_Tap_1"> 
     <Paragraph> 
      fdsfdfdf 
      <Hyperlink Click="Hyperlink_Click_1">fdsfdsfsaf</Hyperlink> 
      fsdfsdfa 
     </Paragraph> 
    </RichTextBox> 
</Grid> 

하고 코드 : 둘 다 RichTextBox_Tap_1에서 RichTextBox 당신이 얻을 것이다 콜백을 클릭하면이 경우

bool RtbTapHandled = false; 

private void Hyperlink_Click_1(object sender, RoutedEventArgs e) 
{ 
    System.Diagnostics.Debug.WriteLine("Hyperlink"); 
    RtbTapHandled = true; 
} 

private void RichTextBox_Tap_1(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    if (RtbTapHandled) 
    { 
     e.Handled = true; 
    } 

    RtbTapHandled = false; 
    System.Diagnostics.Debug.WriteLine("RTB_Tap"); 
} 

private void ContentPanel_Tap_1(object sender, System.Windows.Input.GestureEventArgs e) 
{ 
    System.Diagnostics.Debug.WriteLine("Content_Tap"); 
} 

ContentPanel_Tap_1이지만, Hyperlink을 클릭하면 Hyperlink_Click_1RichTextBox_Tap_1이 처리되지만 해당 레벨에서 처리되고 중지됩니다.

+0

그래, 꽤 멋지다. 감사! –

관련 문제