public CreateAccountViewController() : base(UITableViewStyle.Grouped, null, true) { this.ViewModel = new CreateAccountViewModel(); var eleAcceptTos = new BooleanElement("Accept", this.ViewModel.ToS); eleAcceptTos.BindValue(this.ViewModel, vm => vm.ToS); var eleFirstName = new EntryElement("First name", "Enter first name", this.ViewModel.FirstName); eleFirstName.BindText(this.ViewModel, vm => vm.FirstName); var eleLastName = new EntryElement("Last name", "Enter last name", this.ViewModel.LastName); eleLastName.BindText(this.ViewModel, vm => vm.LastName); var eleBirthday = new DateElement("Birthday", this.ViewModel.Birthday); eleBirthday.BindDate(this.ViewModel, vm => vm.Birthday); var btnLogin = new UIButton { BackgroundColor = UIColor.White, Frame = new CGRect(0, 0, UIScreen.MainScreen.Bounds.Width, 64) }; btnLogin.SetTitle("Create Account", UIControlState.Normal); btnLogin.SetTitleColor(UIColor.Green, UIControlState.Normal); btnLogin.SetTitleColor(UIColor.DarkGray, UIControlState.Disabled); btnLogin.BindEnable(this.ViewModel, vm => vm.ToS); btnLogin.TouchUpInside += (sender, args) => this.CreateAccount(); var eleUsername = new EntryElement("Login", "Enter desired login", this.ViewModel.Username); eleUsername.BindText(this.ViewModel, vm => vm.Username); var elePassword = new EntryElement("Password", "Enter desired password", this.ViewModel.Password, true); elePassword.BindText(this.ViewModel, vm => vm.Password); const string NavTitle = "Bindings"; this.Root = new RootElement(NavTitle) { new Section("Personal") { eleFirstName, eleLastName, eleBirthday }, new Section("Account") { eleUsername, elePassword }, new Section("Read the Terms of Service") { eleAcceptTos }, new Section { new UIViewElement(string.Empty, btnLogin, true) } }; Action <CreateAccountViewController, string> updateTitle = (c, text) => { if (this.NavigationItem == null) { return; } if (!string.IsNullOrEmpty(this.ViewModel.FirstName) && !string.IsNullOrEmpty(this.ViewModel.LastName)) { this.NavigationItem.Title = $"{this.ViewModel.FirstName} {this.ViewModel.LastName}"; } else { this.NavigationItem.Title = NavTitle; } }; BindingCore.CreateBinding(this, this.ViewModel, vm => vm.FirstName, updateTitle); BindingCore.CreateBinding(this, this.ViewModel, vm => vm.LastName, updateTitle); }