かのろぐ

日常と、なかよく。

Store Appに挫折したけど【Windows Store 向けのMVVMライブラリ】作ってみた

こんにちは。今日は、


XAML Advent Calendar 2014 - Qiita

の22日目の記事です。

 

昨晩はかなりアレな記事を書きましたが、今日はそんなことないので落ち着いて下さい。

 

 

 

XAML Advent Calendar の昨日は oika さんのバリデーションルールの話でしたね。


[WPF]自作ValidationRuleのプロパティにバインディング | OITA: Oika's Information Technological Activities

正直このあたりよくわかってないんですよね…ううむ、全然XAMLを活用できていない…

 

Dispatcherとマルチスレッドの話をしようかと思いましたが、予定を変更してお送りします(時間がない)

 

Windows Store Apps 向けのMVVMライブラリ "Skylight"

ということで、Windows Store向けのMVVMライブラリを作ってみたというのが今日のメインイベントです。


karno/Skylight · GitHub

名前を "Skylight" と言います。明かり取りとか、天窓といった意味があります。

なんでかって、一緒に作ってたアプリケーションとかライブラリの名前を「光」に関連するものに統一してたからです…

 

なぜ生まれたか

実は以前に Windows Phone 用のアプリケーションを作っていて(挫折)、そのアプリを構築するにあたってライブラリが必要だったというのがあります。

Behaviors SDKが前提に必要なので、今回公に出すにあたって、Store向けとPhone向けに分割しましたが、うまくいっていないかもしれないです…

 

つかいかた

意図的に Livet に似せてありますが、InteractionMessage じゃなくて Message だったり、MessageTriggerじゃなくてMessageTriggerBehaviorだったり、DirectInteractionは無かったり、といった感じの違いがあります。

Windows Phone のサンプルですが、テストページがこんな感じになるかと:


Skylight example XAML code

 


Skylight example C# code

てな感じで、ナントカAndContinueにも支援が効きますよ~というお話。

当然タダでは効かないので、App.xaml.cs に細工をしてやる必要はあるんですが: 


Skylight example initialization code

ナントカAndContinueを効かすついでに、ViewModelにSaveNavigationStateとかLoadNavigationStateをどうこうするっていうのも加えてます。

既存のNavigationHelperとかNotificationObjectHelperを活かす作りになってますので、それがないとダメな感じです。

 

だいぶ荒削りですが

と、まあ、こんな感じです。

というか、Store向けのMVVMフレームワークやライブラリってどれも仰々しくてしっくり来ないんですよね、LocatorだったりVMとMの自動結合だったり…正直すごい機能作られたならきちんとドキュメントも整備してもらわないとわかんない殺しで死ぬだけという

ということで、MessengerやViewModel基底クラスだけに絞り、もっと楽しくXAMるために作ってみましたが、何にしてもドッグフーディングの途中で力尽きたので足りないものとか問題とかいっぱいあるのかもしれません。が、まぁ、何かの賑やかしになればと思いました。以上です。

 

ま、でも、もうこの先Windows Phone Appはもちろん、Store Appを書くこともメンテすることも無いんだろうなぁと思います(遠い目)

 

というわけで

XAML Advent Calendar、明日はたなかさんですね。お任せしました!