C1HtmlHostコントロールについて
C1HtmlHostコントロールを使用すると、HTMLのIFrameタグのようにSilverlightページ上にHTMLコンテンツを表示できます。また、このコントロールはページ上にいくつも配置でき、Silverlightページ上に、Gridコントロールなどで複数のHTMLコンテンツを配置することが可能です。
HTMLコンテンツの表示方法は2つあります。1つはSourceUriプロパティを使用して、コントロール内に表示するHTMLコンテンツのURLを指定する方法で、既にあるWebページのコンテンツを表示する場合に使用します。この場合は、SourceUriプロパティに表示したいWebページの絶対URLを指定します。
もう1つの方法は、SourceHtmlプロパティを使用して、コントロール内にHTML文字列を使って表示する方法です。この方法を使うと、プログラムでHTMLコードを作成してコンテンツを表示できます。
SourceHtmlプロパティにHTMLコードを設定するには
SourceHtmlプロパティにHTMLコードを設定するためには、ちょっと工夫が必要になります。それは、タグの<>
記号や""
記号です。HTMLコードを記述するにはHTMLタグが必須ですが、そのままXAMLファイルに記述するとエラーになってしまいます。
<c1ext:C1HtmlHost SourceHtml="<table border="0"><tr><td><font color="#FF80C0"> このコーナーは、私が作成したフリーソフトをダウンロードする コーナーです。</font></td>" />
そのため、<>
記号を次のように既定のエスケープ文字列に変え、""
は''
(シングルクォーテーション)に変えて記述します。
直接記述できない文字 | エスケープされた文字 |
< | < |
> | > |
" | ' |
この記号を使ってHTMLコードを修正すると次のようになります。
<c1ext:C1HtmlHost SourceHtml="<table border='1'><tr><td> <font color='#FF80C0'>このコーナーは、私が作成した フリーソフトをダウンロードするコーナーです。</font> </td>" />
記号が文字になったので少し見づらくなりますが、使用する記号はこれぐらいなので慣れればすぐに使いこなせるようになります。
Windowlessプロパティを「True」に設定する
C1HtmlHostコントロールを使ってSilverlightプラグイン内にHTMLコンテンツを表示するには、プラグインのWindowlessプロパティを「True」に設定する必要があります。この処理を行っておかないと、アプリケーション実行時にこのプロパティに関するエラーメッセージが表示されます。
ただし、コントロールがプラグインのプロパティを変更することはできないため、ページの作成者があらかじめWindowlessプロパティを「True」に設定しておきます。Windowlessプロパティは、プロジェクトにある「xxxTestPage.aspx」ファイル(xxxはアプリケーション名)に追加します。
ソリューションエクスプローラでこのファイル名をダブルクリックして開きます。
[ソース]タブをクリックするとコードが表示されます。
<body>
セクションにある<param>
セクションに、次のプロパティ設定を追加します。
<param name="Windowless" value="true" />
これで、Silverlightページ内に他のHTMLドキュメントを表示できるようになります。