FC2ブログ
 

Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです


--年--月--日

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


2009年08月30日

イベント定義の落とし穴

Silverlightを使って社内システム開発プロジェクトをやっています。
知っている方も多いと思われますが、Silverlight/WPFでは、UI(画面)の定義に
XAML(ザムル)というXMLベースの拡張言語を使います。(FlexではMXMLでしたか?)

個人的な感想をいうと、はじめは取っ付きにくいのですが、触りはじめて2ヶ月
たった今でも正直言って少々(いや、かなり?)違和感があります。

VBではお馴染みの"Click"や"SelectionChanged"などのイベントを定義すると、
インテリセンス機能(VS2008の定義画面で)で、イベントハンドラを選択する
ことができます。"新規"を選択すると、メソッドの空枠を作ってくれたりします。
この場合、イベントハンドラには Handles 句が付きません。

もちろん、今までどおり、VS2008のエディタでイベントハンドラを作成すること
もできるのですが、この場合は Handles 句が付きます。

どちらで定義すべきなのか?という問題は確かにあるのですが・・・。

ある機能を作成、コーディングもひととおり終わり、テスト中。

デバッグ実行をしていると、とあるイベントハンドラが2回呼ばれます。はれ?
おかしいなあ。どうして2回来るの?ああ、ここで・・・いや?ちがうなー。

SilverlightはWebサービスを使用するので、DBとの通信を行う際には非同期に
なります。それはわかっているのですが、どうして特定のイベントハンドラが
2回呼ばれるのかがわかりません。

勘のいい方、もうおわかりですね?

そう、XAMLとエディタの両方でイベントハンドラ定義を行っていたのです。

ちなみに両方で定義した場合、XAML定義のほうが優先(先に)呼ばれるようです。

[ posted by H.K ]

この記事に対するコメント


この記事に対するコメントの投稿














管理者にだけ表示を許可する



この記事に対するトラックバック
トラックバックURL
http://comfair2.blog24.fc2.com/tb.php/433-306688ff
この記事にトラックバックする(FC2ブログユーザー)











上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。