2009-10-09 8 views
5

Silverlight 3 cho phép bạn chạy ứng dụng out of the browser, cài đặt liên kết trên trình đơn trên máy tính để bàn/bắt đầu của bạn.Silverlight 3 - Thoát khỏi trình duyệt HtmlPage.Window.Navigate

Vấn đề là chúng tôi hiện đang sử dụng

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

để tải một URL vào một cửa sổ trình duyệt mới (đó là để cung cấp một 'thân thiện in' trang cho người dùng để in). Điều này hoạt động trong phiên bản SL thông thường trong trình duyệt, nhưng bên ngoài trình duyệt, chúng tôi nhận được 'Cây cầu DOM/scripting bị tắt'. ngoại lệ ném khi phát hành cuộc gọi.

Có phương án nào hoạt động ngoài trình duyệt không?

Tôi đã xem Open page in silverlight out of browser nhưng tôi cần thực hiện điều này hoàn toàn bằng mã, vì vậy tôi không muốn thêm nút siêu liên kết (ẩn) và sau đó lập trình 'nhấp vào' (trừ khi tôi hoàn toàn phải ...) .

Trả lời

5

bạn có thể thử kế thừa từ HyperlinkButton và hiển thị phương thức Click() công khai (sau đó bạn có thể khởi tạo và gọi từ mã thay vì khai báo nó trong xaml). Chi tiết tại đây: http://mokosh.co.uk/post/2009/10/08/silverlight-oob-open-new-browser-window/

+3

Trang web của bạn không hiển thị câu trả lời này. Nên đăng lại ở đây. –

2

Tôi đã viết một phương pháp Extension dựa trên ý tưởng kế thừa từ HyperlinkButton.

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(); 
} 
} 

Sau đó, sử dụng có thể sử dụng nó đơn giản, giống như

mới Uri ("http://www.google.com ") .Navigate (" _ blank");

+0

Làm tốt lắm :) !! – Gomino