1

私はこれにかなり困惑していると言わざるを得ず、おそらく同じ問題に遭遇した人がいるといいのですが。次のように作成された HyperlinkBut​​ton があります。

var hb = new HyperlinkButton
{
     Content = fooText,
     ClickMode = ClickMode.Release,
     NavigateUri = new Uri(fooLink.Value)
};
hb.Click += hb_Click;

static void hb_Click(object sender, RoutedEventArgs e)
{
    var btn = (HyperlinkButton)sender;
    HtmlPage.Window.Navigate(btn.NavigateUri, "_blank");
}

リンクは、アプリケーション内ではなく、Web サイトへの絶対 URL ( http://.. .) です。そのため、ブラウザの新しいタブで開きたいと考えています。それはまさにそれがすることです!Web サイトは新しいタブで開きますが、アプリケーション タブで次のエラーが表示されます。

ここに画像の説明を入力

次のように、ターゲット パラメーターがないようにイベント ハンドラーを変更すると、次のようになります。

HtmlPage.Window.Navigate(btn.NavigateUri);

...ブラウザがアプリケーションから移動する直前に、エラーも表示されます。しかし、新しいタブを開きたいです。

私は Visual Studio 11 の Silverlight ビジネス アプリケーション テンプレートを使用していますが、いくつかの謎のバグがあることに既に気付きました。これはそのうちの 1 つかもしれません。全体として、それは機能します。エラーメッセージを取り除く必要があるだけです。しかし、飲み込むことができるイベント ハンドラーで例外がスローされることはありません。

4

2 に答える 2

1

あなたはこれを行うことができます:

var hb = new HyperlinkButton
{
     Content = fooText,
     ClickMode = ClickMode.Release,
     NavigateUri = new Uri(fooLink.Value),
     TargetName = "_blank"
};

Click イベント ハンドラーなし。

よりクリーンな方法で、まさにあなたが望むことを行う必要があります。

于 2012-06-14T14:37:19.790 に答える
0

これで試してみてください:

    /// <summary>
    /// Hyperlink button - simulates hyperlink click
    /// </summary>
    private class HyperlinkButtonWrapper : HyperlinkButton
    {
        public void OpenURL(string navigateUri)
        {
            OpenURL(new Uri(navigateUri, UriKind.Absolute));
        }

        public void OpenURL(Uri navigateUri)
        {
            base.NavigateUri = navigateUri;
            base.TargetName = "_blank";
            base.OnClick();
        }
    }

    /// <summary>
    /// Method opens url
    /// <para>Example: OpenURL("http://www.google.com")</para>
    /// </summary>
    /// <param name="navigateUri"></param>
    public static void OpenURL(string navigateUri)
    {
        new HyperlinkButtonWrapper().OpenURL(navigateUri);
    }
于 2012-06-14T10:21:55.573 に答える