public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            _source = Vm.Items.GetTableViewSource(
                BindTestTableViewCell,
                ReuseId,
                factory: () => new TableViewSourceEx());

            TableView.RegisterClassForCellReuse(typeof(TestTableViewCell), new NSString(ReuseId));

            _source.GetHeightForHeaderDelegate = () => 50;
            _source.GetViewForHeaderDelegate   = () =>
            {
                _headerView = new HeaderForTableView();

                _bindings.Add(
                    this.SetBinding(
                        () => _source.SelectedItem.Name,
                        () => _headerView.SelectedItemLabel.Text,
                        fallbackValue: "Nothing yet"));

                _bindings.Add(
                    this.SetBinding(
                        () => Vm.ToggledItems,
                        () => _headerView.ToggledItemsLabel.Text));

                return(_headerView);
            };

            TableView.Source = _source;

            var addButton = new UIBarButtonItem
            {
                Title = "Add"
            };

            addButton.SetCommand(Vm.AddCommand);

            var delButton = new UIBarButtonItem
            {
                Title = "Del"
            };

            var selectedItemBinding = this.SetBinding(() => _source.SelectedItem);

            _bindings.Add(selectedItemBinding);
            delButton.SetCommand(Vm.DeleteCommand, selectedItemBinding);

            NavigationItem.RightBarButtonItems = new[]
            {
                delButton,
                addButton,
            };
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            var nav           = (NavigationService)ServiceLocator.Current.GetInstance <INavigationService>();
            var useCreateCell = (bool?)nav.GetAndRemoveParameter(this);

            if (useCreateCell == null || useCreateCell.Value)
            {
                _source = Vm.Items.GetTableViewSource(
                    CreateCell,
                    BindUiTableViewCell,
                    factory: () => new TableViewSourceEx());
            }
            else
            {
                _source = Vm.Items.GetTableViewSource(
                    BindTestTableViewCell,
                    ReuseId,
                    factory: () => new TableViewSourceEx());

                TableView.RegisterClassForCellReuse(typeof(TestTableViewCell), new NSString(ReuseId));
            }

            _source.GetHeightForHeaderDelegate = () => 50;
            _source.GetViewForHeaderDelegate   = () =>
            {
                _headerView = new HeaderForTableView();

                _bindings.Add(
                    this.SetBinding(
                        () => _source.SelectedItem.Title,
                        () => _headerView.SelectedItemLabel.Text,
                        fallbackValue: "Nothing yet"));

                return(_headerView);
            };

            TableView.Source = _source;

            var addButton = new UIBarButtonItem
            {
                Title = "Add"
            };

            addButton.SetCommand(Vm.AddCommand);

            var delButton = new UIBarButtonItem
            {
                Title = "Del"
            };

            var selectedItemBinding = this.SetBinding(() => _source.SelectedItem);

            _bindings.Add(selectedItemBinding);
            delButton.SetCommand(Vm.DeleteCommand, selectedItemBinding);

            NavigationItem.RightBarButtonItems = new[]
            {
                delButton,
                addButton,
            };
        }