取消浏览器中的打开链接

时间:2012-05-11 12:25:58

标签: c# windows-phone-7

在我的Windows手机应用程序中,我使用RichTextBox元素

我有一个超链接,当用户点击它时会出现一个对话框:你想在exteranl浏览器中打开这个链接吗?如果用户拒绝,则不应打开外部浏览器。我取消导航但无论如何 - 外部浏览器打开。如何取消浏览器中的打开链接?

//Constructor
        static Helper()
                {
                    var phoneApplicationFrame = Application.Current.RootVisual as PhoneApplicationFrame;
                    if (Application.Current.RootVisual as PhoneApplicationFrame != null)
                    {
                        phoneApplicationFrame.Navigating += new NavigatingCancelEventHandler(NavigationService_Navigating);
                    }

                }

link.Foreground = new SolidColorBrush(Colors.Blue);
                            link.MouseOverForeground = new SolidColorBrush(Colors.Blue);
                            link.TargetName = "_blank";

                            var linkText = new Run() { Text = linkDesc };
                            link.Inlines.Add(linkText);
                            link.Click += new RoutedEventHandler(NavidateTo);

private static void NavidateTo(object sender, RoutedEventArgs routedEventArgs)
        {

            if (MessageBox.Show(
                             Constants.BrowserNavigating,
                             "",
                              MessageBoxButton.OKCancel) == MessageBoxResult.Cancel)
            {
                StateManager.Set("ExternalBrowser", "true");
            }
            else
            {
                StateManager.Set("Browser", "true");
            }
        }

        public static void NavigationService_Navigating(object sender, NavigatingCancelEventArgs e)
        {
            var res = StateManager.Get("ExternalBrowser");
            if (res != null)
            {
                StateManager.Remove("ExternalBrowser");
                e.Cancel = true;
            }

        }

1 个答案:

答案 0 :(得分:1)

不要让HyperlinkBut​​ton打开链接本身,不要指定NavigationUri,而是自己处理Tap事件。

在事件处理程序中询问问题,只有在他们说“是”时才打开浏览器 这比尝试取消正在进行的事情要简单得多。