We use MvvmCross in our applications. In our Android app, we use NavigationDrawer for our menu. We load our HomeView, which contains NavigationDrawer and ContentFrame.
<android.support.v4.widget.DrawerLayout >
<FrameLayout android:id="@+id/content_frame" />
<ListView android:id="@+id/left_drawer" />
</android.support.v4.widget.DrawerLayout>
When the method starts OnCreate(), we load the AudioPlayerFragment in content_framebased on the database query. In the same method, we configure a listener that expects the user to click one of the ListItem in the navigation drawer.
protected override void OnCreate(Bundle bundle) {
_topDrawerList = FindViewById<MvxListView>(Resource.Id.left_drawer);
_topDrawerList.ItemClick += (sender, args) = > SelectItem(args.Position, null);
if(bundle == null)
SelectItem(0, null);
}
private void SelectItem(int position, UserViewModel currentUser) {
SupportFragmentManager.BeginTransaction()...
}
Our application works great, and I like how HomeView is the only view for the application. Everything else is a fragment.
ViewModel HomeView, ViewModel . , .
- PCL
- ViewModels
- HomeViewModel
- AudioPlayerViewModel < - vm
- LoginFragmentViewModel < - vm
- Droid.Ui
- AudioPlayerFragment
- LoginFragment
- HomeView < - . ... AudioPlayerFragment .
iOS, , . , , HomeView SlidingPanel, ContentFrame, "".
, MenuView MenuViewModel... .
- PCL
- ViewModels
- HomeViewModel
- AudioPlayerViewModel < - vm
- LoginFragmentViewModel < - vm
- Touch UI
- AudioPlayerView
- HomeView
- LoginView
- MenuView < - UGLY!!!
- ViewModels
- MenuViewModel < - UGLY!!!
View/ViewModel . SlidingPanels "" iOS , , , /ViewModel .
ViewModels, PCL? () Android?