プログラムの事とかスマートフォン専用ページを表示プログラムの事とかプログラミングに関することとか、暇つぶしに作ったものとか載せてみようかと。C#,WPF,Silverlight,Windowsストアアプリあたりがメイン。プロフィール名前:ぷにお職業:ぷろぐらま一言:お約束ですが「掲載内容は私自身の見解です」よ。>>2013年04月04日IValueConverterの罠ツイートすみません、罠ってほど大したもんじゃないです。今回私が引っかかって悔しかったのでこんなタイトルにしてみました。それではどんな罠に引っ掛かったかを簡単なサンプルで紹介。(サンプルはWPFですがXAML+IValueConverterなら何でも同じでしょう、きっと)こちらがC#のコード。(ソースコード貼り付ける方法が分からなかったので画像ですんません)見づらいかもしれませんが、値とパラメーターを乗算して返すだけです。parameter)の型。コメントに書いてあるようにString型です。こちらがXAMLのコード。Sliderの値を先ほどのコンバーターを使ってProgressBarとTextBlockに入れてます。ConverterParameterには0.5が入っているので、Sliderの半分の値が出てほしいって感じです。Sliderの半分の値が出てますね。期待通り♪ところが、ある状態でこのアプリを起動すると半分どころか5倍になってる!って罠にはまりました。結論は単純でOSの「地域と言語」の設定がこんな感じになってたんですね。.(ピリオド)と、通常と逆になってたんです。すると、ConverterParameterに0.5と書いてある部分の意味が変わります。0.5じゃなくて5って解釈されちゃうんですね。こんな設定普通やらねーよ、と思うかもしれませんがそれは国内のみをターゲットにしている場合。カンマとピリオドが日本と逆の国って結構あるんですよ。アプリの多言語化を考えている人はお気をつけて。いらないとは思いますがこのアプリのコードです。|この記事へのコメントコメントを書くお名前:メールアドレス:ホームページアドレス:コメント:×この広告は180日以上新しい記事の投稿がないブログに表示されております。