5

特定のUI要素があり、クリックすると別のURLに移動するはずです。マウスダウンイベントを処理して、次のようなものを実行してみました。System.Windows.Browser.HtmlPage.Window.Navigate(new Uri( "http://google.com")、 "_blank");

ただし、ポップアップブロッカーを無効にしない限り、これはブラウザによってブロックされます(ChromeとFirefoxの両方を試しました)。調査を行ったところ、ユーザーの操作の結果として発生しないナビゲーションがブラウザーによってブロックされているようです。ブラウザーに関する限り、このナビゲーションはユーザーではなくプラグイン(Silverlight)によって開始されます。

OK、理にかなっています。しかし、代わりにHyperlinkBut​​tonを使用してみましたが、ブロックされませんでした。

これらの2つのアプローチがブラウザとは異なる扱いを受けるのはなぜだろうか。何か案が?

ナビゲーショントリガーUIをHyperLinkBut​​tonでラップすることで実際に問題を回避しましたが、それでも非常に興味があります...

4

1 に答える 1

4

派手な企業の見積もりを引き出して、「これは機能であり、バグではありません」と言います。

Silverlightチームは、明らかにセキュリティについて心配しています。彼らはあなたや私が私たちのアプリでクレイジーなことをすることを望んでいません-たくさんのブラウザウィンドウをポップアップして人々をZombo.comにルーティングするようなものです。合唱団を想像してみてください!ゾンボ!

彼らのドキュメントから要約: 彼らは、HyperlinkBut​​tonを使用してアプリケーションの外部に移動することだけを望んでいます。実際、彼らは余分なステップを踏んでおり、設定によっては、HyperlinkBut​​tonからでも、外部ページに移動した場合にSecurityExceptionをスローすることさえあります。なんて素敵だ。

本当の質問:なぜハイパーリンクボタンであり、他のものではないのですか?

ナビゲートできるのは1つの「もの」だけです。これにより、Silverlightのテスト中にMicrosoftの時間を節約できます。この1つは、内部XAMLページと外部Webページの両方にナビゲートできます。一貫性があり、ナビゲーションを行う方法が1つしかない場合もあります。

UIElementです。これは、プライマリビジュアルスレッドで実行するのが好きなコードの背後にあります。VisualElementがどこかに行きたいとブラウザに約束することができます。Microsoftは、マウスクリック/キーボード入力イベントツリーを必要とするコントロールに制限ロジックを配置することもできます。

全体として、コントロールに作業を行わせることで簡単に始めるのは理にかなっています。

楽しいもの!これがお役に立てば幸いです。

于 2011-02-24T17:21:24.470 に答える