3

Silverlight Out-of-Browser アプリケーションからウィンドウ ポップアップを開く必要があります。

<param name="enablehtmlaccess" value="true" />Index.html にパラメーターを追加しましたが、コード ビハインドからこれを実行します。

HtmlPage.Window.Navigate(new Uri(myUrl), "_blank", myFeatures);

それでもエラーが返されます:

Silverlight OOB Error: The DOM/scripting bridge is disabled.

この投稿について読みましたが、OOB からポップアップを開くことができないということですか? なぜこれを行う必要があるのか​​というと、実際にはWebBrowserコントロールによって OOB Silverlight で HTML ページを表示しましChildWindowたが、_blank ページにリンクされている HTML ページのアンカーをクリックすると、デフォルトのブラウザーにジャンプします。OOB Silverlight のボタン コントロールからトリガーされて、HTML インデックス ページをデフォルト ブラウザでも最初に起動することを除いて、要件を満たしていません。それは可能ですか?

アドバイスをください、ありがとう。

4

3 に答える 3

4

これがあなたが求めているものかどうかはわかりませんが、これを試してください...

OOBアプリでは、次の回避策を使用できます。

次のような派生ハイパーリンクボタンを作成します。

public class MyHyperlinkButton : HyperlinkButton 
{ 
        public void ClickMe() 
        { 
                base.OnClick(); 
        } 
} 

ナビゲーションに使用します。

private void NavigateToUri(Uri url) 
{ 
        if (App.Current.IsRunningOutOfBrowser) 
        { 
                MyHyperlinkButton button = new MyHyperlinkButton(); 
                button.NavigateUri = url; 
                button.TargetName = "_blank"; 
                button.ClickMe(); 
        } 
        else 
        { 
                System.Windows.Browser.HtmlPage.Window.Navigate(url, "_blank"); 
        } 
}

forums.silverlight.netを参照してください

于 2011-08-23T01:23:31.187 に答える
3

今日、この問題に遭遇しました。これが SilverLight 5 で解決した方法です。次のコードで新しいクラスを作成します。

/// <summary>
/// Opens a new browser window to the specified URL with the specified target
/// For use while running both in or out-of-browser
/// </summary>
public class WebBrowserBridge
{
    private class HyperlinkButtonWrapper : HyperlinkButton
    {
        public void OpenURL(String navigateUri, String target = "_blank")
        {
            OpenURL(new Uri(navigateUri, UriKind.Absolute), target);
        }

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

    public static void OpenURL(String navigateUri, String target = "_blank")
    {
        HyperlinkButtonWrapper hlbw = new HyperlinkButtonWrapper();
        hlbw.OpenURL(navigateUri, target);
    }

    public static void OpenURL(Uri navigateUri, String target = "_blank")
    {
        HyperlinkButtonWrapper hlbw = new HyperlinkButtonWrapper();
        hlbw.OpenURL(navigateUri, target);
    }
} 

これを実装して使用する方法は次のとおりです。

private void hlViewMarketplace_Click(object sender, RoutedEventArgs e)
        {
            Uri destination = new Uri("http:///www.google.com/" + ((HyperlinkButton)sender).CommandParameter);
            WebBrowserBridge.OpenURL(destination, "_blank");
        }
于 2013-01-18T16:32:27.887 に答える
3

いいえ、これは不可能です。OOB アプリケーションでは、HTML ブリッジとのやり取りはすべて無効になっています。

于 2010-06-11T10:05:58.757 に答える