こいついつも悪戦苦闘してんな
まず余談
さて、前回書いた通り、UWPの勉強始めました。
そしたら、ここ何日かの間に、こんなニュースもありました。
記事の一文に、
Microsoftは先日、Windowsストアアプリのみがインストール可能な「Windows 10 S」を文教向けと位置付けて発表したが、同OSを法人向けにも展開することを考えており、Windowsストアアプリの不足を埋めるためにかなりの力を注いでいるようだ。
とある通り、やっぱり法人向け展開があるようです。
(当初の記事にもあったんですけどね。あと、iTunesが法人向け展開されてもしょうがないんですけどね)
というわけで、勉強は続けます。
勉強法
こういう新しいものは、習うより慣れるのが一番です。
さあ早速、適当にアプリを作りましょう!
作成前に
とはいえ、一から作るのも面倒なので、既存のテンプレートを使います。
(一からMVVMパターン作るのも、難しくはないけど面倒)

前回のブログでも出しましたが、「Template 10」を使います。使いました。
Template 10 Template Pack - Visual Studio Marketplace
作ろうとしたもの
簿記で言うところの、「社債の償却原価法」の計算ツールを目指すことにしました。
本当はファイナンスリースの計算が良いのですが、まずは簡単なものから…ということで。
起動
使い方は、上のGitHubに書いてありますが、簡単に書くと、
- プロジェクトを作る
- ソリューションを「クリーン」する
- ソリューションを「リビルド」する
すると、NuGetから必要なライブラリを参照しなおしてくれるので、動作します。
とりあえず必要な機能(入力周り)
まずは、以下のデータ入力です。
- 原価
- 利率
- 年数
年数は、Sliderを使います。(最長20年)
他はTextBoxです。
こんな感じになります。

次に、原価と利率の入力ですが、以下の制限を付けます。
- 原価
数値のみ - 利率
小数を許可
なのですが…
違い その1
Windwos FormやWPFのころは、それぞれ、TextBox.ImeModeプロパティやInputMethodクラスで制御できました。*2
まあ、こんなのは複雑になるだけだし、いくら画面の入力制限を付けても、受け入れ側でチェックする必要はあります。
(Webのリクエストなら、事前チェックは必須)
できないなら仕方ないし、悩んでも仕方ない、というわけで、方針変更。
遷移時にチェックします。
幸い、WPFのころは、「INotifyDataErrorInfo」というクラスがあり、それをViewModel側で指定すると、画面側にエラー有無を表示できました。
こう、DataAnnotationで属性を付けたりとか、そういうやつです。
違い その2
なんと、XAMLでINotifyDataErrorInfo等をサポートしなくなったようです。
ソースはこちら↓(README.MD)
In Windows UWP XAML/C# apps, developers will discover that input controls do not support DataAnnotation or ExceptionValidationRule or IDataErrorInfo or INotifyDataErrorInfo or BindingValidationError
だそうな。
無いとかあんのかよ(´・ω・`)
解決策
生産性を確保しつつ、Viewをリッチな感じにするなら、上のリンクにあるライブラリを使ったり、Prismを使いましょう、ということでしょう。
Prismが無いと相当難しい、ということはわかりました。
感想
まあ、UWPはWindowsのサブセットだからね。仕方ないね。
今後も折を見て投稿できたらなーと思います。
わざわざ「その1」ってつけたので、その2もいつか出ると思います!