locked
ウィンドウ間の連携について RRS feed

  • 質問

  • お世話になります。

    Silverlight/DataGridを利用し、データの一覧表示を実施する画面があります。
    DataGridのセルをクリックすると別のIEのウィンドウにて詳細情報を表示しています。
    ※複数画面を起動させて比較表示したいという顧客要望があり、画面遷移ではなく、
    別ウィンドウで起動させています。
    ※起動コード
    System.Windows.Browser.HtmlPage.Window.Navigate(new Uri(navigateUri, UriKind.Absolute), "_blank")

    起動させたウィンドウにてデータ更新が行われた場合、ウィンドウを閉じたタイミングで
    呼び出し元画面にて表示しているデータ一覧の更新をかけたいのですが、このようなことは
    可能なのでしょうか?

    よろしくお願いします。

    2012年4月16日 2:58

回答

  • 今回のように別のブラウザーウインドウにSilverlightを表示した場合、値の受け渡しには2つの方法があります。

    1.HTML DOM経由でメッセージをやりとりする。

    schsch_21さんがウインドウを開いている起動コードと同じように、System.Windows.Browser名前空間のクラスを利用して、親(opener)側のSilverlightに定義されたメソッドを小画面のSilverlightからHTML(Javascript)経由で動作させます。

    2.ローカルメッセージ通信を利用する。

    クライアントにダウンロードされたSilverlightは、System.Windows.Messaging名前空間のクラスを利用してメッセージのやり取りを行うことができます。

    Silverlight ベースのローカル アプリケーション間の通信

    3.その他の選択肢

    これ以外に、ウインドウを別ブラウザーとして出はなく、ChildWindowとして開くのであれば、単純にクラスのプロパティー経由で値をやり取りできます。

    • 回答としてマーク schsch_21 2012年4月16日 6:40
    • 回答としてマークされていない schsch_21 2012年4月16日 6:40
    • 回答としてマーク schsch_21 2012年4月16日 6:42
    2012年4月16日 3:47

すべての返信

  • 今回のように別のブラウザーウインドウにSilverlightを表示した場合、値の受け渡しには2つの方法があります。

    1.HTML DOM経由でメッセージをやりとりする。

    schsch_21さんがウインドウを開いている起動コードと同じように、System.Windows.Browser名前空間のクラスを利用して、親(opener)側のSilverlightに定義されたメソッドを小画面のSilverlightからHTML(Javascript)経由で動作させます。

    2.ローカルメッセージ通信を利用する。

    クライアントにダウンロードされたSilverlightは、System.Windows.Messaging名前空間のクラスを利用してメッセージのやり取りを行うことができます。

    Silverlight ベースのローカル アプリケーション間の通信

    3.その他の選択肢

    これ以外に、ウインドウを別ブラウザーとして出はなく、ChildWindowとして開くのであれば、単純にクラスのプロパティー経由で値をやり取りできます。

    • 回答としてマーク schsch_21 2012年4月16日 6:40
    • 回答としてマークされていない schsch_21 2012年4月16日 6:40
    • 回答としてマーク schsch_21 2012年4月16日 6:42
    2012年4月16日 3:47
  • かるあ様

    返信ありがとうございました。
    ローカルメッセージ通信にて期待する処理を実装することができました。

    ありがとうございました。

    2012年4月16日 6:42