Silverlight 1.0 で日本語を入力する
前エントリは、デフォルトでは日本語表示に対応していない Silverlight で、無理やり日本語を表示(描画)する方法についてご説明しました。では、日本語の入力も何とかならないでしょうか。実のところ、現在の Silverlight 1.0 では、キーもマウスも「入力」に関する機能は、限定されたものしかなく、WPF(Windows Presentation Foundation)の TextBox のような入力コントロールはありません。アルファベットであれば、1文字ずつキー入力を処理することもできますが、かな漢字変換が必要な日本語の入力はできません。
しかし、前エントリで html の <input> 要素で入力した日本語文字列を描画したように、Silverlight では JavaScript を使って html DOM とも Silverlight オブジェクトともやりとりができます。つまり、html と Silverlight を「重ね合わせ」てしまえば、あたかも Silverlight 上で日本語を入力しているかのように見せることができます。これは、前エントリを少し加工するだけで実現できます。
具体的には、Silverlight オブジェクトを生成する際に isWindowless: 'true' という属性を指定した上で、silverlightPlugInHost(ホストコントロールのID)や input 要素(id=Text1)、button要素(id=Button1)に対して、以下のようなスタイルを割り当てています。
#silverlightPlugInHost {
top: 10px;
left: 0px;
height: 480px;
width: 640px;
position: absolute;
z-index: 0;
}
#Text1
{
top: 14px;
left: 100px;
width: 190px;
background: transparent;
position: absolute;
z-index: 1;
}
#Button1
{
top: 10px;
left: 320px;
width: 60px;
position: absolute;
z-index: 1;
}
実装例はこちらをご覧ください→ http://develop.net/samples/disptext2/