-1

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

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

//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;
            }

        }
4

1 回答 1

1

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

在事件处理程序中提出问题,只有在他们说是时才打开浏览器。
这比试图取消已经在进行中的事情要简单得多。

于 2012-05-11T17:45:33.810 回答