CSharp

WindowsPhone8からWindows8.1 universalにコードをコピペしたらクソはまった話

愚痴です。

UserControlを作ってそのプロパティにデータをbindすることはたくさんあると思いますが、WindowsPhone8用に書いてたプロジェクトからWindows 8.1 Universal (Phone/Windows)のプロジェクトにコードをコピペしたらドはまりした愚痴です。

PropertyMetadataのコンストラクタのオーバーロードが、PhoneとUniversalで違っているっぽいです。MSDNのページには記載が見当たりませんが、PropertyChangedCallback 1引数のみのコンストラクタがUniversalには無くなっています。

Windows Phone 8 project (VS2012)

2012_1 2012_2 2012_3

 

Windows 8.1 universal project (VS2013)2013_1 2013_2

 

 

なんやこれ。

もともとWP8アプリで2 of 3のコンストラクタを使っていたぼくは思いっきりコードをコピペして2時間くらい悩んでいたのですが、1引数で渡していたCallbackがいつのまにかデフォルト値になっていただけだったのでした。せめてPropertyChangedCallbackをintにキャストした段階でException投げてくれよ。。。。

つらかった。

真に型安全な世界を探して生きていきたいです。

UserControlのプロパティに値をBindingする

BindingとUserControlはとても便利なのであわせてWPアプリ開発でも使いたいところ。詰まったところをメモしておきます。どうでもよいですがWindows関係は、.NETで使えるのかSilverlightで使えるのかStore appで使えるのかPhoneで使えるのかぱっと見分からない情報が多くて困りますね。なおWP8に関する日本語の情報はほぼ存在しない模様。

Continue reading