ひょんなことからWPF/Eを勉強する必要が出たのですが日本語資料がとても少ない(^^;
なので、ついでにちょっとずつメモを書き残そうかと。
3.イベントハンドラを定義する
WPF/Eのイベントハンドラ関数は2つのパラメータが必要になります。
| パラメータ |
説明 |
| sender |
イベントを生成したWPF/Eオブジェクトのインスタンスを示します。 オブジェクトのTypeの値はToStringメソッドで取り出せます。 |
| eventArgs |
イベントハンドラの引数。 イベントの発生元で設定された値。 ただし、Loadedイベントでは未設定となるためnullが設定されている。 |
なお、これらのイベントハンドラの引数はイベントハンドラ内で利用することがない場合は定義する必要がありません。
次のサンプルは、JavaScriptでWPF/Eのイベントハンドラ関数を定義したサンプルです。
今回はsenderパラメータからobject typeをalertダイアログボックスで表示させるサンプルです。。
1: function onLoaded(sender, eventArgs) { 2: alert("Sender = " + sender.ToString()); 3: }
命名されたWPF/Eオブジェクトはイベントハンドラから参照することができます。
WPF/Eオブジェクトを命名するには x:Name 属性を使用します。
次のサンプルではXAMLでオブジェクトに命名しているコードです。
1: <Canvas
2: xmlns="http://schemas.microsoft.com/client/2007"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: Loaded="javascript:onLoaded" >
5:
6: <TextBlock x:Name="myTextBlock" />
7:
8: </Canvas>
JavaScriptでFindNameメソッドを利用してWPF/Eオブジェクトツリーから定義済みの名称を検索します。
今回のサンプルではTextBlockオブジェクトのTextプロパティに現在日付を表示させます。
なお、今回はeventArgsパラメータを省略しています。
1: function onLoaded(sender) { 2: sender.FindName("myTextBlock").Text = Date(); 3: }
上記の例では実はオブジェクトを取得し、プロパティを設定するという2つの処理をまとめて行っていました。
WPF/Eのオブジェクトのプロパティを1つだけ設定するだけならこれで十分です。
しかし、複数のプロパティを設定したい場合、
1.fineNameメソッドで検索して見つけたWPF/EオブジェクトはfindNameメソッドの戻り値として取得することができる
2.取得したオブジェクトをオブジェクト変数へ格納する
3.格納したオブジェクト変数を利用して複数のプロパティを設定する
といった手順で複数のプロパティを設定することができます。
次のコードがJavaScriptによって上記のことを行っています。
1: function onLoaded(sender) { 2: var textblock = sender.findName("myTextBlock"); 3: textblock.Text = Date();
4: textblock.FontFamily = "Comic Sans MS";
5: textblock.FontSize = "24";
6: }
7:
続きは明日(^^;;;