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投げてくれよ。。。。

つらかった。

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