Silverlight OOBでリンクを開く方法
SilverlightのOOB(Out of Browser)モードはSilverlightのプログラムをユーザーのローカルコンピュータで実行させ、ユーザーがページをロードする時間を節約し、ウェブサイトを入力することなくアクセスできることを実現し、マイクロソフトが私たちに与えた驚喜です.しかし、セキュリティ上の理由から、現在のSilverlightバージョン(3と4)では、OOBモードでHyperlinkButtonを使用してリンクを直接開くことはできません.
簡単な解決策は次のとおりです.
HyperlinkButtonを使用したClickイベント:
次に、イベントに次のコードを追加します.
using System.Runtime.InteropServices.Automation;//この参照を追加するには
private void Hyp_Click(object sender, RoutedEventArgs e) {
dynamic shell = AutomationFactory.CreateObject("Shell.Application");shell.ShellExecute("http://www.dengfeng.org");
}
以上のコードはOOBモードで実行できますが、ブラウザでは実行できません.
したがって、OOBとブラウザでリンクを開くことができるように、この2つのモードを判断する必要があります.コードは以下の通りです.
簡単な解決策は次のとおりです.
HyperlinkButtonを使用したClickイベント:
次に、イベントに次のコードを追加します.
using System.Runtime.InteropServices.Automation;//この参照を追加するには
private void Hyp_Click(object sender, RoutedEventArgs e) {
dynamic shell = AutomationFactory.CreateObject("Shell.Application");shell.ShellExecute("http://www.dengfeng.org");
}
以上のコードはOOBモードで実行できますが、ブラウザでは実行できません.
したがって、OOBとブラウザでリンクを開くことができるように、この2つのモードを判断する必要があります.コードは以下の通りです.
if (AutomationFactory.IsAvailable)
{
dynamic shell = AutomationFactory.CreateObject("Shell.Application");
shell.ShellExecute(uri.ToString());
}
else if (!System.Windows.Application.Current.IsRunningOutOfBrowser)
{
System.Windows.Browser.HtmlPage.Window.Navigate(uri, "_blank");
}
else
{
throw new InvalidOperationException();
}
, , :
:
public static void OpenURL(string url)
{
new Thread(() =>
{
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
if (AutomationFactory.IsAvailable)
{
dynamic shell = AutomationFactory.CreateObject("Shell.Application");
shell.ShellExecute(url);
}
else if (!System.Windows.Application.Current.IsRunningOutOfBrowser)
{
System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(url), "_blank");
}
else
{
throw new InvalidOperationException();
}
});
}).Start();
}