2016-11-26 15 views
0

私は、ViewModelsとViewsのネストをサポートするソリューション/ mvvmフレームワークを探しています。私は何を意味することは次のとおりです。それぞれのViewModelにはBaseViewModelから派生入れ子になったViewModelsのネストされたビュー

  1. のviewmodelsは(親のViewModel内にネスト)
  2. 各ViewModelには、対応するビュー
  3. 見解を持っているサブのviewmodelsあるタイプのBaseViewModelの性質を持っています対応するViewModelのサブViewModelに対応するContentControl(テンプレートビューを表示できるコントロール)を持っている
  4. ViewModelのインスタンスを作成するときには、適切な具象サブViewModelのインスタンスを渡す必要があります。ビューは自動的に解決され、ViewModels構造体に基づいてネストされます(何らかの形で)。

それを行うには多くの方法があるかもしれないので、私は何とかを定義していません。

私の考えがはっきりしていることを願っています。このアプローチにより、ViewModelとビューを簡単かつ動的に作成することができます。 XMLなどのViewModelのツリーを作成し、これに基づいて新しい機能を作成します。

質問は以下のとおりです。

  1. はXamarin.Formsため、このようなアプローチをサポートする任意のMVVMフレームワーク(mvvmcross、catel)はありますか?
  2. どのようにViewModelsのツリーをXML、データベーステーブルなどに保存しますか?
  3. どのようにViewModelsのインスタンスを作成しますか?逆シリアル化、依存関係注入、...
  4. ビューを作成して解決する方法(フレームワークがそれをサポートしていない場合)

答えて

1

いくつかの時間後、私は、私は尋ねた質問についてのいくつかの経験を共有することができます:

  1. を、私は、このようなアプローチをサポートする任意のMVVMフレームワークがあるかどうかわかりませんが。おそらくCatel v5がこれをサポートするだろうが、私はこれをチェックしなかった。私はカスタムソリューションを使用します。
  2. 私のソリューションでは、ViewModels定義を親/子構造の単一データベーステーブルに格納します。
  3. ViewModelインスタンスは、データベーステーブルの定義を使用してカスタムファクトリによって作成されます。
  4. ビューは、ValueConvertersを使用して作成されます。各ビューはViewModels構造体に基づいて作成されたバインディングを持っているため、可能です。

上記の回答のほかに、プリズムを使用することをお勧めします。私にはいくつかの欠点がありますが、それはそのようなアプローチでは最高のフレームワークです。

0

はい!あなたが探しているものに正確に適合し、心の中でXamarin.Formsで作成されたMVVMフレームワークがあります:

FreshMvvM:https://github.com/rid00z/FreshMvvm

クイックスタートガイド:http://www.michaelridland.com/xamarin/freshmvvm-quick-start-guide/

それはどのように他のオプションと比較しません?

It's super light and super simple 
It's specifically designed for Xamarin.Forms 
Designed to be easy to learn and develop (great when you are not ready for RxUI) 
Uses a Convention over Configuration 

特長

PageModel to PageModel Navigation 
Automatic wiring of BindingContext 
Automatic wiring of Page events (eg. appearing) 
Basic methods (with values) on PageModel (init, reverseinit) 
Built in IOC Container 
PageModel Constructor Injection 
Basic methods available in Model, like Alert 
Built in Navigation types for SimpleNavigation, Tabbed and MasterDetail 

あなたはのviewmodelsにあなたが好きなだけの巣または導出することができます(私たちのケースで我々はBaseViewModelを持っています)。私たちはFreshMvvMをスタートアップのために使用しており、必要なものにうまく合うように戦闘テストを行っています。

+0

ありがとうございます! FreshMvvmはViewModelを最初にサポートしていますか(ViewModelによるナビゲーション)? – raV720

+0

はい、FreshMvvMはViewModel First navigationをサポートしています。実際、ナビゲーションはViewModels経由で行う必要があります。 – Raven

+0

興味深いのは、ネストされたユーザコントロールをサポートしていたCatel以外のmvvmフレームワーク/ツールキット(インジェクトされたモデル)は認識していませんでした。 CatelはXamarin Forms(まだ)をサポートしていないので、良い選択肢ではありません。だから今は何か他のものが本当に必要です。その機能に関するサンプルはどこにありますか?特に、親子関係は私にとって興味深いはずです。 –

関連する問題