2009-10-09 23 views
5

Silverlight 3では、デスクトップ/スタートメニューにリンクをインストールするアプリケーションout of the browserを実行できます。Silverlight 3 - ブラウザの外にHtmlPage.Window.Navigate

問題は、我々は現在、(それは印刷するユーザーのための「印刷に優しい」のページを提供するために、だ)新しいブラウザウィンドウにURLをロードするために

System.Windows.Browser.HtmlPage. 
    Window.Navigate(new Uri("http://<server>/<resource>"), "_blank") 

を使用しています。これは通常のブラウザでのSLのバージョンでは機能しますが、ブラウザの外では「DOM /スクリプティングブリッジは無効です」と表示されます。呼び出しを発行するときにスローされる例外です。

ブラウザには別の方法がありますか?

私はOpen page in silverlight out of browserを見たことがありますが、私は完全にコードで行う必要があるので、(隠された)ハイパーリンクボタンを追加し、プログラムで「クリック」したくありません。 。

答えて

5

HyperlinkBut​​tonから継承してパブリックのClick()メソッドを公開することができます(xamlで宣言する代わりにコードからインスタンス化して呼び出すことができます)。 詳細:http://mokosh.co.uk/post/2009/10/08/silverlight-oob-open-new-browser-window/

+3

あなたのサイトはこの回答を表示しません。ここで再投稿する必要があります。 –

2

私はHyperlinkBut​​tonから継承するという考えに基づいてExtensionメソッドを作成しました。

public static class UriExtensions { 

class Clicker : HyperlinkButton { 
    public void DoClick() { 
    base.OnClick(); 
    } 
} 

static readonly Clicker clicker = new Clicker(); 

public static void Navigate(this Uri uri) { 
    Navigate(uri, "_self"); 
} 

public static void Navigate(this Uri uri, string targetName) { 
    clicker.NavigateUri = uri; 
    clicker.TargetName = targetName; 
    clicker.DoClick(); 
} 
} 

次に使用が

新しいウリ( "http://www.google.com ").Navigate(" _ブランク")のように、それをシンプルに使用することができます。

+0

素敵な仕事:)! – Gomino