2013-03-13 112 views
2

我們有MVVM Silverlight應用程序。我正嘗試從按鈕點擊事件中打開web url,這個事件發生在客戶端viewmodel上,並且通過invoke方法需要在新瀏覽器中打開web url。如何從Silverlight應用程序在新瀏覽器中打開URL

我正在使用Process.Start方法,如下面的Server端代碼所述。

var URL = @"http://SiteSelect.aspx"; 
    SecureString secure = new SecureString(); 
    char[] passwordChars = Properties.Settings.Default.Password.ToCharArray(); 
    //converting string to securestring...found from internet 
    foreach (char c in passwordChars) 
      { 
      secure.AppendChar(c); 
      } 
    Process.Start(URL,"",Properties.Settings.Default.User,secure,"agent"); 

這會引發與用戶名和密碼有關的錯誤。我查了用戶名和密碼是否正確。任何人都可以使用解決方案或其他任何方法?

感謝,

回答

4

您創建一個輔助類:

public static class CommonHelper 
{ 
    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(); 
     } 
    } 

    public static void OpenURL(string navigateUri) 
    { 
     new HyperlinkButtonWrapper().OpenURL(navigateUri); 
    } 
} 

用法:

CommonHelper.OpenURL(@"http://SiteSelect.aspx"); 
+0

謝謝,但我也必須通過證書......我可怎麼能做到這一點? – 2013-03-14 16:42:43

+0

該解決方案也適用於「瀏覽器外」。謝謝! – 2015-04-01 14:36:47

0

您可以使用此還有:

using System.Windows.Browser; 
var uri = new Uri("http://foo.fr"); 
HtmlPage.Window.Navigate(uri, "_blank"); 

最簡單的方式來傳遞憑證是把它們放在U中RL,但它不是很安全。即:

http://user:[email protected]

+2

不錯的和短的解決方案,但不適用於「瀏覽器外」應用程序。 – 2015-04-01 14:36:15

相關問題