-1

私のWindowsPhoneアプリケーションでは、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 に答える