Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

View MarcBruins's full-sized avatar
🏠
Working from home

Marc Bruins MarcBruins

🏠
Working from home
View GitHub Profile
#ViewModel Creation
In MvvmCross v3 - Hot Tuna - the default ViewModel location and construction was overhauled in order to provide 3 new features:
- constructor based Dependency Injection
- navigation using Typed navigation classes
- saving and reloading VM state for 'tombstoning'
These changes were breaking changes for existing v1 and vNext apps, but provide significant testability and usability advantages for MvvmCross developers.
@MarcBruins
MarcBruins / MonkeyCell.cs
Last active October 14, 2017 09:08
MonkeyTableviewcell
using System;
using Foundation;
using MvvmCross.Binding.BindingContext;
using MvvmCross.Binding.iOS.Views;
using UIKit;
namespace MonkeyList.Core.iOS
{
public partial class MonkeyCell : MvxTableViewCell
{
@MarcBruins
MarcBruins / MonkeysView.cs
Created October 14, 2017 09:13
MonkeysView.cs
using System;
using MonkeyList.Core.ViewModels;
using MvvmCross.Binding.BindingContext;
using MvvmCross.Binding.iOS.Views;
using MvvmCross.iOS.Views;
using UIKit;
namespace MonkeyList.Core.iOS
{
public partial class MonkeysView : MvxViewController<MonkeysViewModel>
@MarcBruins
MarcBruins / Monkey.cs
Created October 14, 2017 10:42
Monkey.cs
namespace MonkeyList.Core
{
public class Monkey
{
public string Name { get; set; }
public string Location { get; set; }
public string Details { get; set; }
public string Image { get; set; }
}
}
@MarcBruins
MarcBruins / MonkeysViewModel.cs
Created October 14, 2017 10:45
MonkeysViewModel.cs
using MvvmCross.Core.ViewModels;
namespace MonkeyList.Core.ViewModels
{
public class MonkeysViewModel : MvxViewModel
{
public MvxObservableCollection<Monkey> Monkeys => new MvxObservableCollection<Monkey>();
public MonkeysViewModel()
{
@MarcBruins
MarcBruins / MonkeysView.cs
Created October 14, 2017 10:47
MonkeysView.cs
using Android.App;
using Android.OS;
using MvvmCross.Droid.Views;
namespace MonkeyList.Droid
{
[Activity]
public class MonkeysView : MvxActivity
{
protected override void OnCreate(Bundle bundle)
@MarcBruins
MarcBruins / MonkeyView.axml
Created October 14, 2017 10:48
MonkeyView.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/darker_gray">
<MvxRecyclerView
android:id="@+id/my_recycler_view"
android:scrollbars="vertical"
@MarcBruins
MarcBruins / listitem_monkey.axml
Created October 14, 2017 10:49
listitem_monkey.axml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:local="http://schemas.android.com/apk/res-auto"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="2dp">
<android.support.v7.widget.CardView
android:layout_width="match_parent"
android:layout_height="match_parent"
@MarcBruins
MarcBruins / Setup.cs
Created October 14, 2017 10:51
Setup.cs
namespace MonkeyList.Droid
{
public class Setup : MvxAndroidSetup
{
//Default stuff goes here
protected override IEnumerable<Assembly> AndroidViewAssemblies => new List<Assembly>(base.AndroidViewAssemblies)
{
typeof(MvvmCross.Droid.Support.V7.RecyclerView.MvxRecyclerView).Assembly
};
@MarcBruins
MarcBruins / AutoCompleteTextFieldSetup.cs
Last active October 14, 2017 11:08
AutoCompleteTextField setup
AutoCompleteTextField.Setup(this, new List<string>() { "customizable", "xamarin", "autocomplete", "ios" });