Windows Phone 7最初にはまったところ
おいしい煮卵作れるようになったけど日持ちしないので強制煮卵ライフになっているhidakaです。
1ダースの卵で作るとちょっと大変なことになるので皆さん注意ですよ。
さて先日、KDDIとMSと富士通東芝から、IS12Tの発表がありました。
防水もいいですが派手な携帯好きとしてはピンクもってきたのはとてもいいと思います。
白とか黒とかメタリックとかほんと嫌なんですよね。おじさん臭というか無難臭が。。
で、それに合わせてこそこそとWP7アプリ作っているわけですが、記念すべき最初にはまったポイントなど。
ちなみにVisualStudioは10年以上前に少しVB6触っただけ、C#なにそれ?Blendはでた当初に
beta試したけど画面暗いし気分のらないからすぐadobe系に戻ったくらいの状態でした。
つまりほぼ前提知識ゼロ。Androidはいろいろやってます。iPhoneはさわるだけです。
で、WP7といえばデータバインディング。
一般的には知りませんが個人的にはこの仕組みでした。
データを変更すれば画面上のリストが変わっていく仕組みです。
一方通行だったり双方向だったりいろいろありますが、はまったのはこのデータを操作した時でした。
~~その時の現象
1.まず画面Aにデータにバインディングされたリストがあります。
リスト項目を選択すると、変数を持って画面Bに遷移します。
2.画面Bでは、ボタンがあり、クリックで画面Aにバインディングされているデータを更新します。
3.あとは戻るボタンで画面Aに戻ります
~~ここまで
問題は画面Bでデータ更新した時、追加の時は問題ないのに削除した時は画面遷移(画面Bからさらに画面Bを呼び出す)が起こってしまう。
つまり削除した時だけ画面AのSelectionChangedイベントが発生していました。画面Bなのに。
画面Bには遷移系のものはなにもなかったので、すごく不思議。まさか画面Aのイベント起きるとは。
おそらく追加の時は既にあるものには変化ないのでSelectionChangedは起きないけどデータの削除だとインデックスが変わるのでSelectionChangedが起きるのかと。
選択しているリストのインデックスは-1なのですぐにわかるんですが、その時はログの出し方もよくわからずモリモリ作っていたのでなにが起こっているかわかりませんでした。
そもそも選択されたIDちゃんとチェックしろよって話でもありますね。
デバッグの方法は最初に覚えたほうがいいですよ。入門書なんかでよく最初のほうにデバッグの話とかあってつまんないから飛ばしてたんですが、反省しました。
ちなみにアプリは、Mangoからの機能を使ったものになったので完成してもまだ公開できないってことに昨日気づきました。
(Mango対応アプリの登録は8月22日から)