public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            using (var set = new BindingSet <TabViewModel>())
            {
                NavigationItem.RightBarButtonItems = new[]
                {
                    new UIBarButtonItem {
                        Title = "Add"
                    }.SetBindings(set,
                                  (bindingSet, item) => bindingSet.Bind(item, "Clicked").To(model => model.AddCommand)),
                    new UIBarButtonItem {
                        Title = "Insert"
                    }.SetBindings(set,
                                  (bindingSet, item) => bindingSet.Bind(item, "Clicked").To(model => model.InsertCommand)),
                    new UIBarButtonItem {
                        Title = "Remove"
                    }.SetBindings(set,
                                  (bindingSet, item) => bindingSet.Bind(item, "Clicked").To(model => model.RemoveCommand))
                };

                set.Bind(this, AttachedMemberConstants.ItemsSource).To(model => model.ItemsSource);
                set.Bind(this, AttachedMemberConstants.SelectedItem).To(model => model.SelectedItem).TwoWay();
                set.BindFromExpression(this, "ItemTemplate $tabDataTemplate");
                set.BindFromExpression(this, "Title SelectedItem.Name + SelectedItem.Id, Fallback='Nothing selected'");
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            using (var set = new BindingSet <ContentViewModel>())
            {
                set.Bind(View, AttachedMemberConstants.Content).To(model => model.ViewModel);
                set.BindFromExpression(View, "ContentTemplate $labelItemTemplate");
                set.BindFromExpression(View, "ContentViewManager $contentViewManager");
            }
        }
        public object SelectTemplate(object item, object container)
        {
            var page = new TabPage();
            var set  = new BindingSet <TabPage, IViewModel>(page);

            set.BindFromExpression("Content ;");
            set.BindFromExpression("Text DisplayName");
            set.BindFromExpression("IsBusy IsBusy");
            set.BindFromExpression("BusyMessage BusyMessage");
            set.Apply();

            return(page);
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            using (var set = new BindingSet <ProductWorkspaceViewModel>())
            {
                set.Bind(this, controller => controller.Title).To(model => model.DisplayName);

                var addItem = new UIBarButtonItem("Add", UIBarButtonItemStyle.Plain, null);
                set.Bind(addItem, "Clicked").To(model => model.AddProductCommand);

                var saveItem = new UIBarButtonItem("Save", UIBarButtonItemStyle.Done, null);
                set.Bind(saveItem, "Clicked").To(model => model.SaveChangesCommand);
                NavigationItem.RightBarButtonItems = new[] { addItem, saveItem };

                var searchBar = new UISearchBar(new RectangleF(0, 0, 320, 44))
                {
                    Placeholder = "Filter..."
                };
                set.Bind(searchBar, bar => bar.Text).To(model => model.FilterText).TwoWay();
                TableView.TableHeaderView = searchBar;

                set.Bind(View, "IsBusy").To(model => model.IsBusy);
                set.Bind(View, "BusyMessage").To(model => model.BusyMessage);

                set.Bind(TableView, AttachedMemberConstants.ItemsSource).To(model => model.GridViewModel.ItemsSource);
                set.Bind(TableView, AttachedMemberConstants.SelectedItem)
                .To(model => model.GridViewModel.SelectedItem)
                .TwoWay();
            }

            TableView.SetCellStyle(UITableViewCellStyle.Subtitle);
            TableView.SetCellBind(cell =>
            {
                cell.SetEditingStyle(UITableViewCellEditingStyle.Delete);
                cell.Accessory = UITableViewCellAccessory.DetailDisclosureButton;
                cell.DetailTextLabel.AdjustsFontSizeToFitWidth = true;
                using (var set = new BindingSet <ProductModel>())
                {
                    set.BindFromExpression(cell, "AccessoryButtonTapped $Rel(UIViewController).DataContext.EditProductCommand, CommandParameter=$self.DataContext, ToggleEnabledState=false");
                    set.BindFromExpression(cell, "DeleteClick $Rel(UIViewController).DataContext.RemoveProductCommand, CommandParameter=$self.DataContext, ToggleEnabledState=false");

                    set.Bind(cell.TextLabel, label => label.Text)
                    .To(model => model.Name);
                    set.Bind(cell.DetailTextLabel, label => label.Text)
                    .To(model => model.Description);
                    set.BindFromExpression(cell, "TitleForDeleteConfirmation $Format('Delete {0}', Name)");
                }
            });
        }
        public DynamicObjectView()
        {
            InitializeComponent();

            using (var set = new BindingSet <DynamicObjectViewModel>())
            {
                set.Bind(dynamicTb)
                .To(() => (vm, ctx) => vm.DynamicModel.Member <object>("DynamicProperty"))
                .TwoWay();
                set.Bind(dynamicLabel)
                .To(() => (vm, ctx) => vm.DynamicModel.Member <object>("DynamicProperty"));
                set.BindFromExpression(methodLabel, "Text DynamicModel.DynamicMethod(DynamicModel.DynamicProperty)");
                set.BindFromExpression(indexLabel, "Text DynamicModel[DynamicModel.DynamicProperty]");
            }
        }
        public DynamicObjectView()
        {
            InitializeComponent();

            using (var set = new BindingSet<DynamicObjectViewModel>())
            {
                set.Bind(dynamicTb)
                    .To(() => vm => vm.DynamicModel.Member<object>("DynamicProperty"))
                    .TwoWay();
                set.Bind(dynamicLabel)
                    .To(() => vm => vm.DynamicModel.Member<object>("DynamicProperty"));
                set.BindFromExpression(methodLabel, "Text DynamicModel.DynamicMethod(DynamicModel.DynamicProperty)");
                set.BindFromExpression(indexLabel, "Text DynamicModel[DynamicModel.DynamicProperty]");
            }
        }
Exemplo n.º 7
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor           = UIColor.White;
            CollectionView.BackgroundColor = UIColor.White;
            //            CollectionView.AllowsMultipleSelection = true;

            using (var set = new BindingSet <TableViewModel>())
            {
                NavigationItem.RightBarButtonItems = new[]
                {
                    new UIBarButtonItem {
                        Title = "Add"
                    }.SetBindings(set,
                                  (bindingSet, item) => bindingSet.Bind(item, "Clicked").To(model => model.AddCommand)),
                    new UIBarButtonItem {
                        Title = "Remove"
                    }.SetBindings(set,
                                  (bindingSet, item) => bindingSet.Bind(item, "Clicked").To(model => model.RemoveCommand))
                };

                set.BindFromExpression(CollectionView, "ItemTemplate $collectionViewCellTemplate");
                set.Bind(CollectionView, AttachedMemberConstants.ItemsSource)
                .To(model => model.GridViewModel.ItemsSource);
                set.Bind(CollectionView, AttachedMemberConstants.SelectedItem)
                .To(model => model.GridViewModel.SelectedItem)
                .TwoWay();
                set.Bind(this, controller => controller.Title)
                .To(model => model.GridViewModel.SelectedItem.Name)
                .WithFallback("Nothing selected");
            }
        }
 protected override void Initialize(StringElement template,
                                    BindingSet <StringElement, Tuple <string, ViewModelCommandParameter> > bindingSet)
 {
     bindingSet.Bind(element => element.Caption).To(tuple => tuple.Item1);
     bindingSet.Bind(AttachedMemberConstants.CommandParameter).To(tuple => tuple.Item2);
     bindingSet.BindFromExpression("Tapped $Relative(UIViewController).DataContext.ShowCommand");
 }
Exemplo n.º 9
0
 protected override void InitializeTemplate(UICollectionView container, CollectionViewCell cell,
                                            BindingSet <CollectionViewCell, TableItemModel> bindingSet)
 {
     bindingSet.BindFromExpression(cell.Label,
                                   "Text $Format('Name {0}, Selected: {1}, Highlighted: {2}', Name, IsSelected, IsHighlighted)");
     bindingSet.Bind(viewCell => viewCell.Selected).To(model => model.IsSelected).TwoWay();
     bindingSet.Bind(viewCell => viewCell.Highlighted).To(model => model.IsHighlighted).TwoWay();
 }
Exemplo n.º 10
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            TableView.AllowsSelection         = true;
            TableView.AllowsMultipleSelection = true;
            TableView.SetCellStyle(UITableViewCellStyle.Subtitle);
            using (var set = new BindingSet <UITableView, TableViewModel>(TableView))
            {
                NavigationItem.RightBarButtonItem = new UIBarButtonItem("Invert selection", UIBarButtonItemStyle.Plain, null);
                set.Bind(NavigationItem.RightBarButtonItem, "Clicked").To(model => model.InvertSelectionCommand);

                var searchBar = new UISearchBar(new RectangleF(0, 0, 320, 44))
                {
                    Placeholder = "Filter..."
                };
                set.Bind(searchBar, bar => bar.Text).To(model => model.FilterText).TwoWay();
                TableView.TableHeaderView = searchBar;

                set.Bind(AttachedMemberConstants.ItemsSource)
                .To(model => model.GridViewModel.ItemsSource);
            }

            TableView.SetCellBind(cell =>
            {
                cell.SetEditingStyle(UITableViewCellEditingStyle.None);
                cell.Accessory = UITableViewCellAccessory.None;
                cell.DetailTextLabel.AdjustsFontSizeToFitWidth = true;

                using (var set = new BindingSet <TableItemModel>())
                {
                    set.BindFromExpression(cell, "Accessory $BoolToCheckmark($self.Selected)");

                    set.Bind(cell, viewCell => viewCell.Selected).To(model => model.IsSelected).TwoWay();
                    set.Bind(cell, viewCell => viewCell.Highlighted).To(model => model.IsHighlighted).OneWayToSource();
                    set.Bind(cell, viewCell => viewCell.Editing).To(model => model.Editing).OneWayToSource();

                    set.Bind(cell.TextLabel, label => label.Text).To(model => model.Name);
                    set.BindFromExpression(cell.DetailTextLabel,
                                           "Text $Format('Selected: {0}, Highlighted: {1}, Editing: {2}', IsSelected, IsHighlighted, Editing)");
                }
            });
        }
Exemplo n.º 11
0
        protected override void Initialize(UITableViewCell template,
                                           BindingSet <UITableViewCell, TableItemModel> bindingSet)
        {
            template.SetEditingStyle(UITableViewCellEditingStyle.Delete);
            template.Accessory = UITableViewCellAccessory.DetailDisclosureButton;
            template.DetailTextLabel.AdjustsFontSizeToFitWidth = true;

            bindingSet.BindFromExpression(template, "AccessoryButtonTapped $Rel(UIViewController).DataContext.ItemClickCommand, CommandParameter=$self.DataContext, ToggleEnabledState=false");
            bindingSet.BindFromExpression(template, "DeleteClick $Rel(UIViewController).DataContext.RemoveCommand, CommandParameter=$self.DataContext, ToggleEnabledState=false");

            bindingSet.Bind(viewCell => viewCell.Selected).To(model => model.IsSelected).TwoWay();
            bindingSet.Bind(viewCell => viewCell.Highlighted).To(model => model.IsHighlighted).OneWayToSource();
            bindingSet.Bind(viewCell => viewCell.Editing).To(model => model.Editing).OneWayToSource();
            bindingSet.BindFromExpression("TitleForDeleteConfirmation $Format('Delete {0}', Name)");

            bindingSet.Bind(label => label.TextLabel.Text).To(model => model.Name);
            bindingSet.BindFromExpression(template.DetailTextLabel,
                                          "Text $Format('Selected: {0}, Highlighted: {1}, Editing: {2}', IsSelected, IsHighlighted, Editing)");
        }
Exemplo n.º 12
0
        private static TabPage CreateDefaultTabPage(object item)
        {
            var viewModel = item as IViewModel;

            if (viewModel == null)
            {
                return(new TabPage(item == null ? "null" : item.ToString()));
            }
            var page = new TabPage();
            var set  = new BindingSet <TabPage, IViewModel>(page);

            set.BindFromExpression("Content ;");
            if (viewModel is IHasDisplayName)
            {
                set.BindFromExpression("Text DisplayName;");
            }
            set.Apply();
            page.SetDataContext(item);
            return(page);
        }
Exemplo n.º 13
0
 internal static void AddBinding(BindingSet bindingSet, object target, string propertyName, string value, bool required)
 {
     if (value == null)
     {
         if (!required)
         {
             return;
         }
         value = string.Empty;
     }
     bindingSet.BindFromExpression(target, propertyName, ToBindingString(value));
 }
Exemplo n.º 14
0
 private static RootElement CreateRootElement()
 {
     using (var bindingSet = new BindingSet <MainViewModel>())
     {
         var root    = new RootElement("Main view");
         var section = new Section("Examples");
         root.Add(section);
         bindingSet.Bind(section, AttachedMemberConstants.ItemsSource).To(model => model.Items);
         bindingSet.BindFromExpression(section, "ItemTemplate $buttonTemplate");
         return(root);
     }
 }
Exemplo n.º 15
0
        public void SetStringProperty(string propertyName, string value, Func <string, object> convertAction = null)
        {
            if (value == null)
            {
                return;
            }
            var objectToSet = TryGetResourceAsString(value);

            if (objectToSet == null)
            {
                if (value.StartsWith("{"))
                {
                    _bindingSet.BindFromExpression(_target, propertyName, ToBindingString(value));
                    return;
                }
                objectToSet = value;
            }
            var member = BindingServiceProvider.MemberProvider.GetBindingMember(typeof(TTarget), propertyName, false, true);

            member.SetSingleValue(_target, convertAction == null ? objectToSet : convertAction(objectToSet));
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            using (var set = new BindingSet <ItemViewModel>())
            {
                set.BindFromExpression(this, "Title Name + Id");
                var label = new UILabel(new RectangleF(0, 70, View.Frame.Width, 30))
                {
                    TextAlignment = UITextAlignment.Center
                };
                set.BindFromExpression(label, "Text Name + Id");
                View.AddSubview(label);

                UIButton button = UIButton.FromType(UIButtonType.RoundedRect);
                button.Frame = new RectangleF(0, 100, View.Bounds.Width, 30);
                button.SetTitle("Close view", UIControlState.Normal);
                set.Bind(button, "Click").To(model => model.CloseCommand);
                View.AddSubview(button);
            }
        }
        public BindingExpressionView()
        {
            InitializeComponent();

            using (var set = new BindingSet<BindingExpressionViewModel>())
            {
                set.Bind(textTb).To(() => (vm, ctx) => vm.Text).TwoWay();
                set.Bind(linqCountLabel)
                    .To(() => (vm, ctx) => vm.Text.OfType<char>().Count(x => x == 'a'));
                set.Bind(extMethodLabel)
                    .To(() => (vm, ctx) => vm.Text.ExtensionMethod(vm.Text.Count()));
                set.Bind(linqSecondCharLabel)
                    .To(() => (vm, ctx) => vm.Text.OfType<char>().Skip(1).FirstOrDefault());
                set.Bind(conditionLabel)
                    .To(() => (vm, ctx) => string.IsNullOrEmpty(vm.Text) ? "String is empty" : "String is not empty");
                set.Bind(arithmeticLabel)
                    .To(() => (vm, ctx) => vm.Text.Count() + 100 + vm.Text.GetHashCode());
                set.BindFromExpression(nullConditionalLabel, "Text NullableText?.Trim()?.Length ?? -1");
                set.BindFromExpression(interpolatedLabel, "Text $'{Text} length {Text.Length}'");
                /*set.Bind(interpolatedLabel)
                    .To(() => (vm, ctx) => $"{vm.Text} length {vm.Text.Length}");*/ //<-- Visual studio >= 2015
            }
        }
Exemplo n.º 18
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            using (var set = new BindingSet <TabViewModel>())
            {
                NavigationItem.RightBarButtonItems = new[]
                {
                    new UIBarButtonItem {
                        Title = "Add"
                    }.SetBindings(set,
                                  (bindingSet, item) => bindingSet.Bind(item, "Clicked").To(model => model.AddCommand)),
                    new UIBarButtonItem {
                        Title = "Remove"
                    }.SetBindings(set,
                                  (bindingSet, item) => bindingSet.Bind(item, "Clicked").To(model => model.RemoveCommand))
                };

                set.Bind(View, AttachedMemberConstants.ItemsSource).To(model => model.ItemsSource);
                set.BindFromExpression(View, "ItemTemplate $labelItemTemplate");
                set.BindFromExpression(View, "CollectionViewManager $collectionViewManager");
            }
        }
Exemplo n.º 19
0
        public BindingExpressionView()
        {
            InitializeComponent();

            using (var set = new BindingSet <BindingExpressionViewModel>())
            {
                set.Bind(textTb).To(() => (vm, ctx) => vm.Text).TwoWay();
                set.Bind(linqCountLabel)
                .To(() => (vm, ctx) => vm.Text.OfType <char>().Count(x => x == 'a'));
                set.Bind(extMethodLabel)
                .To(() => (vm, ctx) => vm.Text.ExtensionMethod(vm.Text.Count()));
                set.Bind(linqSecondCharLabel)
                .To(() => (vm, ctx) => vm.Text.OfType <char>().Skip(1).FirstOrDefault());
                set.Bind(conditionLabel)
                .To(() => (vm, ctx) => string.IsNullOrEmpty(vm.Text) ? "String is empty" : "String is not empty");
                set.Bind(arithmeticLabel)
                .To(() => (vm, ctx) => vm.Text.Count() + 100 + vm.Text.GetHashCode());
                set.BindFromExpression(nullConditionalLabel, "Text NullableText?.Trim()?.Length ?? -1");
                set.BindFromExpression(interpolatedLabel, "Text $'{Text} length {Text.Length}'");

                /*set.Bind(interpolatedLabel)
                 *  .To(() => (vm, ctx) => $"{vm.Text} length {vm.Text.Length}");*///<-- Visual studio >= 2015
            }
        }
Exemplo n.º 20
0
        private void BindControls()
        {
            ClearBindings();
            SetBindings(Bindings);
            var bindingSet = new BindingSet();

            foreach (var controlBinding in _controlBindings)
            {
                foreach (var binding in controlBinding.Value)
                {
                    bindingSet.BindFromExpression(controlBinding.Key, binding.Key, binding.Value);
                }
            }
            _dataBindings = bindingSet.ApplyWithBindings();
        }
        public BindingResourcesView()
        {
            InitializeComponent();

            using (var set = new BindingSet <BindingResourcesViewModel>())
            {
                set.Bind(objLabel)
                .To(() => (vm, ctx) => ctx.Resource <object>("obj"));
                set.Bind(methodLabel)
                .To(() => (vm, ctx) => ctx.ResourceMethod <object>("Method"));
                set.BindFromExpression(typeLabel, "Text $CustomType.StaticMethod()");
                set.Bind(updateResBtn)
                .To(() => (vm, ctx) => vm.UpdateResourceCommand);
            }
        }
        public BindingResourcesView()
        {
            InitializeComponent();

            using (var set = new BindingSet<BindingResourcesViewModel>())
            {
                set.Bind(objLabel)
                    .To(() => (vm, ctx) => ctx.Resource<object>("obj"));
                set.Bind(methodLabel)
                    .To(() => (vm, ctx) => ctx.ResourceMethod<object>("Method"));
                set.BindFromExpression(typeLabel, "Text $CustomType.StaticMethod()");
                set.Bind(updateResBtn)
                    .To(() => (vm, ctx) => vm.UpdateResourceCommand);
            }
        }
Exemplo n.º 23
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;
            if (TabBarController != null)
            {
                EdgesForExtendedLayout = UIRectEdge.All;
                TableView.ContentInset = new UIEdgeInsets(
                    UIApplication.SharedApplication.StatusBarFrame.Height +
                    NavigationController.NavigationBar.Frame.Height, 0f, TabBarController.TabBar.Frame.Height, 0f);
            }

            using (var set = new BindingSet <OrderEditorViewModel>())
            {
                var searchBar = new UISearchBar(new RectangleF(0, 0, 320, 44))
                {
                    Placeholder = "Filter..."
                };
                set.Bind(searchBar, bar => bar.Text).To(model => model.FilterText).TwoWay();
                TableView.TableHeaderView = searchBar;

                set.Bind(TableView, AttachedMemberConstants.ItemsSource).To(model => model.GridViewModel.ItemsSource);
            }

            TableView.AllowsMultipleSelection = true;
            TableView.SetCellStyle(UITableViewCellStyle.Subtitle);
            TableView.SetCellBind(cell =>
            {
                cell.SetEditingStyle(UITableViewCellEditingStyle.None);
                cell.Accessory = UITableViewCellAccessory.None;
                using (var set = new BindingSet <SelectableWrapper <ProductModel> >())
                {
                    set.Bind(cell, viewCell => viewCell.Selected)
                    .To(wrapper => wrapper.IsSelected)
                    .TwoWay();
                    set.Bind(cell.TextLabel, label => label.Text)
                    .To(model => model.Model.Name);
                    set.Bind(cell.DetailTextLabel, label => label.Text)
                    .To(model => model.Model.Description);
                    set.BindFromExpression(cell, "Accessory $BoolToCheckmark($self.Selected)");
                }
            });
        }
        public BindingExpressionView()
        {
            InitializeComponent();

            using (var set = new BindingSet<BindingExpressionViewModel>())
            {
                set.Bind(textTb).To(() => model => model.Text).TwoWay();
                set.Bind(linqCountLabel)
                   .To(() => model => model.Text.OfType<char>().Count(x => x == 'a'));
                set.Bind(extMethodLabel)
                   .To(() => model => model.Text.ExtensionMethod(model.Text.Count()));
                set.Bind(linqSecondCharLabel)
                   .To(() => model => model.Text.OfType<char>().Skip(1).FirstOrDefault());
                set.Bind(conditionLabel)
                   .To(() => model => string.IsNullOrEmpty(model.Text) ? "String is empty" : "String is not empty");
                set.Bind(arithmeticLabel)
                   .To(() => model => model.Text.Count() + 100 + model.Text.GetHashCode());
                set.BindFromExpression(nullConditionalLabel, "Text NullableText?.Trim()?.Length ?? -1");
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            TableView.AllowsSelection = true;
            TableView.SetCellStyle(UITableViewCellStyle.Subtitle);
            using (var set = new BindingSet <UITableView, TableViewModel>(TableView))
            {
                var editItem = new UIBarButtonItem {
                    Title = "Edit"
                };
                editItem.Clicked += (sender, args) =>
                {
                    TableView.Editing = !TableView.Editing;
                    NavigationItem.RightBarButtonItem.Title = TableView.Editing ? "Done" : "Edit";
                };
                var addItem = new UIBarButtonItem {
                    Title = "Add"
                };
                set.Bind(addItem, "Clicked").To(model => model.AddCommand);
                NavigationItem.RightBarButtonItems = new[] { editItem, addItem };

                var searchBar = new UISearchBar(new RectangleF(0, 0, 320, 44))
                {
                    Placeholder = "Filter..."
                };
                set.Bind(searchBar, bar => bar.Text).To(model => model.FilterText).TwoWay();
                TableView.TableHeaderView = searchBar;

                set.Bind(AttachedMemberConstants.ItemsSource)
                .To(model => model.GridViewModel.ItemsSource);
                set.Bind(AttachedMemberConstants.SelectedItem)
                .To(model => model.GridViewModel.SelectedItem)
                .TwoWay();
                set.BindFromExpression("ItemTemplate $cellDataTemplate");
                set.Bind(this, controller => controller.Title)
                .To(model => model.GridViewModel.SelectedItem.Name)
                .WithFallback("Nothing selected");
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled = true,
                ContentSize = new CGSize(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };
            View.AddSubview(scrollView);

            using (var set = new BindingSet<BindingResourcesViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(10);

                var label = new UILabel(new CGRect(20, 0, View.Frame.Width - 40, 25))
                {
                    Text = "Object from resources($obj)",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 25, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.Bind(label).To(() => vm => BindingSyntaxEx.Resource<object>("obj"));
                scrollView.AddSubview(label);


                label = new UILabel(new CGRect(20, 50, View.Frame.Width - 40, 25))
                {
                    Text = "Method from resources($Method())",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 75, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.BindFromExpression(label, "Text $Method()");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 100, View.Frame.Width - 40, 25))
                {
                    Text = "Type from resources($CustomType.StaticMethod())",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 125, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.BindFromExpression(label, "Text $CustomType.StaticMethod()");
                scrollView.AddSubview(label);


                var btn = UIButton.FromType(UIButtonType.System);
                btn.Frame = new CGRect(20, 150, View.Frame.Width - 40, 25);
                btn.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
                btn.SetTitle("Update resource", UIControlState.Normal);
                set.Bind(btn).To(() => m => m.UpdateResourceCommand);
                scrollView.AddSubview(btn);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            Title = "Title";
            View.BackgroundColor = UIColor.White;

            using (var set = new BindingSet())
            {
                var slider = new UISlider(new RectangleF(20, 65, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask   = UIViewAutoresizing.FlexibleWidth,
                    AccessibilityLabel = "slider",
                    MinValue           = 0,
                    MaxValue           = 100,
                    Value = 50,
                };
                View.AddSubview(slider);

                var textField = new UITextField(new RectangleF(20, 95, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect,
                };
                set.BindFromExpression(textField, "Text $El(slider).Value, Mode=TwoWay, ValidatesOnExceptions=true");
                View.AddSubview(textField);


                var label = new UILabel(new RectangleF(20, 125, View.Frame.Width - 100, 25))
                {
                    Text                      = "Current title",
                    AutoresizingMask          = UIViewAutoresizing.FlexibleRightMargin,
                    AdjustsFontSizeToFitWidth = true,
                    Font                      = UIFont.SystemFontOfSize(12)
                };
                View.AddSubview(label);

                textField = new UITextField(new RectangleF(20, 150, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.BindFromExpression(textField, "Text $Rel(UIViewController).Title, Mode=TwoWay");
                View.AddSubview(textField);


                label = new UILabel(new RectangleF(20, 180, View.Frame.Width - 100, 25))
                {
                    Text                      = "Self binding to width",
                    AutoresizingMask          = UIViewAutoresizing.FlexibleRightMargin,
                    AdjustsFontSizeToFitWidth = true,
                    Font                      = UIFont.SystemFontOfSize(12)
                };
                View.AddSubview(label);

                label = new UILabel(new RectangleF(20, 205, 280, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green
                };
                set.BindFromExpression(label, "Text $self.Frame.Width");
                View.AddSubview(label);
            }
        }
Exemplo n.º 28
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled    = true,
                ContentSize      = new CGSize(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };

            View.AddSubview(scrollView);

            using (var set = new BindingSet <DynamicObjectViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(12);

                var label = new UILabel(new CGRect(20, 0, View.Frame.Width - 40, 25))
                {
                    Text             = "Binding to dynamic property",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                var textField = new UITextField(new CGRect(20, 25, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect,
                };
                set.Bind(textField)
                .To("DynamicModel.Text")
                .TwoWay();
                scrollView.AddSubview(textField);


                label = new UILabel(new CGRect(20, 55, View.Frame.Width - 40, 25))
                {
                    Text             = "Dynamic value",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 80, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green
                };
                set.Bind(label).To("DynamicModel.Text");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 105, View.Frame.Width - 40, 25))
                {
                    Text             = "Dynamic method call",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 130, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask          = UIViewAutoresizing.FlexibleWidth,
                    TextColor                 = UIColor.Green,
                    AdjustsFontSizeToFitWidth = true
                };
                set.BindFromExpression(label, "Text DynamicModel.DynamicMethod(DynamicModel.Text)");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 155, View.Frame.Width - 40, 25))
                {
                    Text             = "Dynamic index call",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 180, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask          = UIViewAutoresizing.FlexibleWidth,
                    TextColor                 = UIColor.Green,
                    AdjustsFontSizeToFitWidth = true
                };
                set.BindFromExpression(label, "Text DynamicModel[DynamicModel.Text]");
                scrollView.AddSubview(label);
            }
        }
Exemplo n.º 29
0
 protected override void Initialize(Button template, BindingSet <Button, Tuple <string, Type> > bindingSet)
 {
     bindingSet.Bind(button => button.Text).To(tuple => tuple.Item1);
     bindingSet.Bind(AttachedMemberConstants.CommandParameter).To(tuple => tuple.Item2);
     bindingSet.BindFromExpression("Click $Relative(Form).DataContext.ShowCommand");
 }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            TableView.AllowsSelection         = true;
            TableView.AllowsMultipleSelection = false;
            TableView.SetCellStyle(UITableViewCellStyle.Subtitle);
            using (var set = new BindingSet <UITableView, TableViewModel>(TableView))
            {
                var editItem = new UIBarButtonItem {
                    Title = "Edit"
                };
                editItem.Clicked += (sender, args) =>
                {
                    TableView.Editing = !TableView.Editing;
                    NavigationItem.RightBarButtonItem.Title = TableView.Editing ? "Done" : "Edit";
                };
                var addItem = new UIBarButtonItem {
                    Title = "Add"
                };
                set.Bind(addItem, "Clicked").To(model => model.AddCommand);
                NavigationItem.RightBarButtonItems = new[] { editItem, addItem };

                var searchBar = new UISearchBar(new RectangleF(0, 0, 320, 44))
                {
                    Placeholder = "Filter..."
                };
                set.Bind(searchBar, bar => bar.Text).To(model => model.FilterText).TwoWay();
                TableView.TableHeaderView = searchBar;

                set.Bind(AttachedMemberConstants.ItemsSource)
                .To(model => model.GridViewModel.ItemsSource);
                set.Bind(AttachedMemberConstants.SelectedItem)
                .To(model => model.GridViewModel.SelectedItem)
                .TwoWay();
                set.Bind(this, controller => controller.Title)
                .To(model => model.GridViewModel.SelectedItem.Name)
                .WithFallback("Nothing selected");
            }

            TableView.SetCellBind(cell =>
            {
                cell.SetEditingStyle(UITableViewCellEditingStyle.Delete);
                cell.Accessory = UITableViewCellAccessory.DetailDisclosureButton;
                cell.DetailTextLabel.AdjustsFontSizeToFitWidth = true;

                using (var set = new BindingSet <TableItemModel>())
                {
                    set.BindFromExpression(cell, "AccessoryButtonTapped $Rel(UIViewController).DataContext.ItemClickCommand, CommandParameter=$self.DataContext, ToggleEnabledState=false");
                    set.BindFromExpression(cell, "DeleteClick $Rel(UIViewController).DataContext.RemoveCommand, CommandParameter=$self.DataContext, ToggleEnabledState=false");
                    set.BindFromExpression(cell, "TitleForDeleteConfirmation $Format('Delete {0}', Name)");

                    set.Bind(cell, viewCell => viewCell.Selected).To(model => model.IsSelected).TwoWay();
                    set.Bind(cell, viewCell => viewCell.Highlighted).To(model => model.IsHighlighted).OneWayToSource();
                    set.Bind(cell, viewCell => viewCell.Editing).To(model => model.Editing).OneWayToSource();

                    set.Bind(cell.TextLabel, label => label.Text).To(model => model.Name);
                    set.BindFromExpression(cell.DetailTextLabel,
                                           "Text $Format('Selected: {0}, Highlighted: {1}, Editing: {2}', IsSelected, IsHighlighted, Editing)");
                }
            });
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new RectangleF(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled    = true,
                ContentSize      = new SizeF(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };

            View.AddSubview(scrollView);

            using (var set = new BindingSet <CommandBindingViewModel>())
            {
                var label = new UILabel(new RectangleF(20, 0, View.Frame.Width - 100, 30))
                {
                    Text                      = "Can execute command",
                    AutoresizingMask          = UIViewAutoresizing.FlexibleLeftMargin,
                    AdjustsFontSizeToFitWidth = true
                };
                scrollView.AddSubview(label);
                var uiSwitch = new UISwitch(new RectangleF(View.Frame.Width - 70, 0, 60, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleLeftMargin
                };
                set.Bind(uiSwitch, @switch => @switch.On)
                .To(model => model.CanExecuteCommand)
                .TwoWay();
                scrollView.AddSubview(uiSwitch);

                UIFont font = UIFont.SystemFontOfSize(9);
                label = new UILabel(new RectangleF(20, 30, View.Frame.Width - 40, 25))
                {
                    Text             = "Binding to command",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                UIButton button = UIButton.FromType(UIButtonType.System);
                button.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
                button.Frame            = new RectangleF(20, 55, View.Frame.Width - 40, 30);
                button.SetTitle("Click", UIControlState.Normal);
                set.Bind(button, "Click").To(model => model.Command).WithCommandParameter("1");
                scrollView.AddSubview(button);


                label = new UILabel(new RectangleF(20, 85, View.Frame.Width - 40, 25))
                {
                    Text             = "Binding to command(ToggleEnabledState = false)",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                button = UIButton.FromType(UIButtonType.System);
                button.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
                button.Frame            = new RectangleF(20, 110, View.Frame.Width - 40, 30);
                button.SetTitle("Click", UIControlState.Normal);
                set.Bind(button, "Click").To(model => model.Command).ToggleEnabledState(false).WithCommandParameter("2");
                scrollView.AddSubview(button);

                label = new UILabel(new RectangleF(20, 140, View.Frame.Width - 40, 25))
                {
                    Text             = "Method without parameters (EventMethod(null))",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                var textField = new UITextField(new RectangleF(20, 165, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.BindFromExpression(textField, "TextChanged EventMethod(null)");
                scrollView.AddSubview(textField);


                label = new UILabel(new RectangleF(20, 195, View.Frame.Width - 40, 25))
                {
                    Text             = "Method with parameter (EventMethod($self.Text))",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                textField = new UITextField(new RectangleF(20, 220, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.BindFromExpression(textField, "TextChanged EventMethod($self.Text)");
                scrollView.AddSubview(textField);

                label = new UILabel(new RectangleF(20, 250, View.Frame.Width - 40, 25))
                {
                    Text             = "Method with event args parameter (EventMethod($args))",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                textField = new UITextField(new RectangleF(20, 275, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.BindFromExpression(textField, "TextChanged EventMethod($args)");
                scrollView.AddSubview(textField);


                label = new UILabel(new RectangleF(20, 305, View.Frame.Width - 40, 25))
                {
                    Text             = "Method with several parameters (EventMethodMultiParams($self.Text, $args))",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                textField = new UITextField(new RectangleF(20, 330, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.BindFromExpression(textField, "TextChanged EventMethodMultiParams($self.Text, $args)");
                scrollView.AddSubview(textField);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            using (var set = new BindingSet<DataAnnotationViewModel>())
            {
                var textField = new UITextField(new CGRect(20, 70, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Placeholder = "Name",
                    BorderStyle = UITextBorderStyle.RoundedRect
                };
                set.Bind(textField)
                    .To(() => (vm, ctx) => vm.NameInVm)
                    .TwoWay()
                    .ValidatesOnExceptions()
                    .ValidatesOnNotifyDataErrors();
                View.AddSubview(textField);

                var label = new UILabel(new CGRect(20, 110, View.Frame.Width - 100, 30))
                {
                    Text = "Disable description validation",
                    AutoresizingMask = UIViewAutoresizing.FlexibleLeftMargin,
                    AdjustsFontSizeToFitWidth = true
                };
                View.AddSubview(label);
                var uiSwitch = new UISwitch(new CGRect(View.Frame.Width - 70, 110, 60, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleLeftMargin
                };
                set.Bind(uiSwitch)
                    .To(() => (vm, ctx) => vm.DisableDescriptionValidation)
                    .TwoWay();
                View.AddSubview(uiSwitch);


                textField = new UITextField(new CGRect(20, 150, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Placeholder = "Description",
                    BorderStyle = UITextBorderStyle.RoundedRect
                };
                set.Bind(textField)
                    .To(() => (vm, ctx) => vm.Description)
                    .TwoWay()
                    .ValidatesOnExceptions()
                    .ValidatesOnNotifyDataErrors();
                View.AddSubview(textField);

                textField = new UITextField(new CGRect(20, 190, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Placeholder = "Custom Description error",
                    BorderStyle = UITextBorderStyle.RoundedRect
                };
                set.Bind(textField)
                    .To(() => (vm, ctx) => vm.CustomError)
                    .TwoWay();
                View.AddSubview(textField);


                label = new UILabel(new CGRect(20, 230, View.Frame.Width - 40, 25))
                {
                    Text = "View model is valid",
                    AutoresizingMask = UIViewAutoresizing.FlexibleLeftMargin,
                    AdjustsFontSizeToFitWidth = true,
                    TextColor = UIColor.Green
                };
                set.BindFromExpression(label, "Visible IsValid");
                View.AddSubview(label);

                label = new UILabel(new CGRect(20, 230, View.Frame.Width - 40, 25))
                {
                    Text = "View model is not valid",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    AdjustsFontSizeToFitWidth = true,
                    TextColor = UIColor.Red
                };
                set.BindFromExpression(label, "Visible !IsValid");
                View.AddSubview(label);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled = true,
                ContentSize = new CGSize(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };
            View.AddSubview(scrollView);

            using (var set = new BindingSet<BindingModeViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(10);

                var label = new UILabel(new CGRect(20, 0, View.Frame.Width - 40, 25))
                {
                    Text = "Current text",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                var textField = new UITextField(new CGRect(20, 25, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle = UITextBorderStyle.RoundedRect,
                };
                set.Bind(textField)
                    .To(() => model => model.Text)
                    .TwoWay();
                scrollView.AddSubview(textField);


                label = new UILabel(new CGRect(20, 55, View.Frame.Width - 40, 25))
                {
                    Text = "LINQ-count of 'a' symbols (Text.Count(x => x == 'a'))",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 80, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.Bind(label)
                    .To(() => model => model.Text.OfType<char>().Count(x => x == 'a'));
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 105, View.Frame.Width - 40, 25))
                {
                    Text = "Custom extension method with args (Text.ExtensionMethod(Text.Length))",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 130, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.Bind(label)
                   .To(() => model => model.Text.ExtensionMethod(model.Text.Length));
                scrollView.AddSubview(label);


                label = new UILabel(new CGRect(20, 155, View.Frame.Width - 40, 25))
                {
                    Text = "LINQ-show second symbol or default (Text.Skip(1).FirstOrDefault())",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 175, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.Bind(label)
                    .To(() => model => model.Text.OfType<char>().Skip(1).FirstOrDefault());
                scrollView.AddSubview(label);


                label = new UILabel(new CGRect(20, 200, View.Frame.Width - 40, 25))
                {
                    Text =
                        "Condition expression ($string.IsNullOrEmpty(Text) ? 'String is empty' : 'String is not empty')",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 225, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.Bind(label)
                    .To(() => model => string.IsNullOrEmpty(model.Text) ? "String is empty" : "String is not empty");
                scrollView.AddSubview(label);


                label = new UILabel(new CGRect(20, 250, View.Frame.Width - 40, 25))
                {
                    Text = "Arithmetic expression (Text.Length + 100 + Text.GetHashCode())",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 275, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.Bind(label)
                   .To(() => model => model.Text.Length + 100 + model.Text.GetHashCode());
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 300, View.Frame.Width - 40, 25))
                {
                    Text = "Null conditional expression (Text?.Trim()?.Length ?? -1)",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 325, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font
                };
                set.BindFromExpression(label, "Text NullableText?.Trim()?.Length ?? -1");
                scrollView.AddSubview(label);
            }
        }
Exemplo n.º 34
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled    = true,
                ContentSize      = new CGSize(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };

            View.AddSubview(scrollView);

            using (var set = new BindingSet <AttachedMemberViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(10);

                var label = new UILabel(new CGRect(20, 0, View.Frame.Width - 40, 25))
                {
                    Text             = "Current text",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                var textField = new UITextField(new CGRect(20, 25, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect,
                };
                set.Bind(textField)
                .To(() => (vm, ctx) => vm.Text)
                .TwoWay();
                scrollView.AddSubview(textField);


                label = new UILabel(new CGRect(20, 55, View.Frame.Width - 40, 25))
                {
                    Text             = "Attached auto property",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 80, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask   = UIViewAutoresizing.FlexibleWidth,
                    TextColor          = UIColor.Green,
                    Font               = font,
                    AccessibilityLabel = "Label_TextExt"
                };
                set.BindFromExpression(label, "TextExt Text");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 105, View.Frame.Width - 40, 25))
                {
                    Text             = "Attached custom property",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 130, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask   = UIViewAutoresizing.FlexibleWidth,
                    TextColor          = UIColor.Green,
                    Font               = font,
                    AccessibilityLabel = "Label_FormattedText"
                };
                set.BindFromExpression(label, "FormattedText Text");
                scrollView.AddSubview(label);
            }
        }
Exemplo n.º 35
0
 private void BindControls()
 {
     ClearBindings();
     SetBindings(Bindings);
     var bindingSet = new BindingSet();
     foreach (var controlBinding in _controlBindings)
     {
         foreach (var binding in controlBinding.Value)
             bindingSet.BindFromExpression(controlBinding.Key, binding.Key, binding.Value);
     }
     _dataBindings = bindingSet.ApplyWithBindings();
     _controlBindings.Clear();
 }
 private static TabPage CreateDefaultTabPage(object item)
 {
     var viewModel = item as IViewModel;
     if (viewModel == null)
         return new TabPage(item == null ? "null" : item.ToString());
     var page = new TabPage();
     var set = new BindingSet<TabPage, IViewModel>(page);
     set.BindFromExpression("Content ;");
     if (viewModel is IHasDisplayName)
         set.BindFromExpression("Text DisplayName;");
     set.Apply();
     page.SetDataContext(item);
     return page;
 }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled = true,
                ContentSize = new CGSize(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };
            View.AddSubview(scrollView);

            using (var set = new BindingSet<AttachedMemberViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(10);

                var label = new UILabel(new CGRect(20, 0, View.Frame.Width - 40, 25))
                {
                    Text = "Current text",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                var textField = new UITextField(new CGRect(20, 25, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle = UITextBorderStyle.RoundedRect,
                };
                set.Bind(textField)
                    .To(() => (vm, ctx) => vm.Text)
                    .TwoWay();
                scrollView.AddSubview(textField);


                label = new UILabel(new CGRect(20, 55, View.Frame.Width - 40, 25))
                {
                    Text = "Attached auto property",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 80, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font,
                    AccessibilityLabel = "Label_TextExt"
                };
                set.BindFromExpression(label, "TextExt Text");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 105, View.Frame.Width - 40, 25))
                {
                    Text = "Attached custom property",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 130, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    Font = font,
                    AccessibilityLabel = "Label_FormattedText"
                };
                set.BindFromExpression(label, "FormattedText Text");
                scrollView.AddSubview(label);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled = true,
                ContentSize = new CGSize(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };
            View.AddSubview(scrollView);

            using (var set = new BindingSet<DynamicObjectViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(12);

                var label = new UILabel(new CGRect(20, 0, View.Frame.Width - 40, 25))
                {
                    Text = "Binding to dynamic property",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                var textField = new UITextField(new CGRect(20, 25, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle = UITextBorderStyle.RoundedRect,
                };
                set.Bind(textField)
                    .To("DynamicModel.Text")
                    .TwoWay();
                scrollView.AddSubview(textField);


                label = new UILabel(new CGRect(20, 55, View.Frame.Width - 40, 25))
                {
                    Text = "Dynamic value",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 80, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green
                };
                set.Bind(label).To("DynamicModel.Text");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 105, View.Frame.Width - 40, 25))
                {
                    Text = "Dynamic method call",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 130, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    AdjustsFontSizeToFitWidth = true
                };
                set.BindFromExpression(label, "Text DynamicModel.DynamicMethod(DynamicModel.Text)");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 155, View.Frame.Width - 40, 25))
                {
                    Text = "Dynamic index call",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 180, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor = UIColor.Green,
                    AdjustsFontSizeToFitWidth = true
                };
                set.BindFromExpression(label, "Text DynamicModel[DynamicModel.Text]");
                scrollView.AddSubview(label);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new CGRect(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled    = true,
                ContentSize      = new CGSize(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };

            View.AddSubview(scrollView);

            using (var set = new BindingSet <BindingResourcesViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(10);

                var label = new UILabel(new CGRect(20, 0, View.Frame.Width - 40, 25))
                {
                    Text             = "Object from resources($obj)",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 25, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green,
                    Font             = font
                };
                set.Bind(label).To(() => (vm, ctx) => ctx.Resource <object>("obj"));
                scrollView.AddSubview(label);


                label = new UILabel(new CGRect(20, 50, View.Frame.Width - 40, 25))
                {
                    Text             = "Method from resources($Method())",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 75, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green,
                    Font             = font
                };
                set.BindFromExpression(label, "Text $Method()");
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 100, View.Frame.Width - 40, 25))
                {
                    Text             = "Type from resources($CustomType.StaticMethod())",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                label = new UILabel(new CGRect(20, 125, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green,
                    Font             = font
                };
                set.BindFromExpression(label, "Text $CustomType.StaticMethod()");
                scrollView.AddSubview(label);


                var btn = UIButton.FromType(UIButtonType.System);
                btn.Frame            = new CGRect(20, 150, View.Frame.Width - 40, 25);
                btn.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
                btn.SetTitle("Update resource", UIControlState.Normal);
                set.Bind(btn).To(() => (vm, ctx) => vm.UpdateResourceCommand);
                scrollView.AddSubview(btn);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new RectangleF(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled    = true,
                ContentSize      = new SizeF(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };

            View.AddSubview(scrollView);

            using (var set = new BindingSet <BindingValidationViewModel>())
            {
                var font = UIFont.SystemFontOfSize(12);

                var label = new UILabel(new RectangleF(20, 0, View.Frame.Width - 40, 25))
                {
                    Text             = "Binding to 'Property' with 'ValidatesOnNotifyDataErrors=True'",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                var textField = new UITextField(new RectangleF(20, 25, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect,
                };
                set.Bind(textField, field => field.Text)
                .To(model => model.Property)
                .TwoWay()
                .ValidatesOnNotifyDataErrors();
                scrollView.AddSubview(textField);


                label = new UILabel(new RectangleF(20, 55, View.Frame.Width - 40, 25))
                {
                    Text             = "Binding to 'PropertyWithException' with 'ValidatesOnNotifyDataErrors=True, ValidatesOnExceptions=False'",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                textField = new UITextField(new RectangleF(20, 80, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.Bind(textField, field => field.Text)
                .To(model => model.PropertyWithException)
                .TwoWay()
                .ValidatesOnNotifyDataErrors();
                scrollView.AddSubview(textField);

                label = new UILabel(new RectangleF(20, 110, View.Frame.Width - 40, 25))
                {
                    Text             = "Binding to 'PropertyWithException' with 'ValidatesOnNotifyDataErrors=False, ValidatesOnExceptions=True'",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                textField = new UITextField(new RectangleF(20, 135, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.Bind(textField, field => field.Text)
                .To(model => model.PropertyWithException)
                .TwoWay()
                .ValidatesOnExceptions();
                scrollView.AddSubview(textField);


                label = new UILabel(new RectangleF(20, 165, View.Frame.Width - 40, 25))
                {
                    Text             = "Binding to 'PropertyWithException' with 'Validate=True'",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                scrollView.AddSubview(label);

                textField = new UITextField(new RectangleF(20, 190, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle      = UITextBorderStyle.RoundedRect
                };
                set.Bind(textField, field => field.Text)
                .To(model => model.PropertyWithException)
                .TwoWay()
                .Validate();
                scrollView.AddSubview(textField);


                UIButton button = UIButton.FromType(UIButtonType.System);
                button.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
                button.Frame            = new RectangleF(20, 220, View.Frame.Width - 40, 30);
                button.SetTitle("Set error(PropertyWithException)", UIControlState.Normal);
                set.Bind(button, "Click").To(model => model.AddErrorCommand);
                scrollView.AddSubview(button);

                button = UIButton.FromType(UIButtonType.System);
                button.AutoresizingMask = UIViewAutoresizing.FlexibleWidth;
                button.Frame            = new RectangleF(20, 250, View.Frame.Width - 40, 30);
                button.SetTitle("Clear error(PropertyWithException)", UIControlState.Normal);
                set.Bind(button, "Click").To(model => model.RemoveErrorCommand);
                scrollView.AddSubview(button);

                label = new UILabel(new RectangleF(20, 280, View.Frame.Width - 40, 25))
                {
                    Text             = "Validation summary",
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    Font             = font
                };
                set.BindFromExpression(label, "Visible $GetErrors().Any()");
                scrollView.AddSubview(label);

                label = new UILabel(new RectangleF(20, 305, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask          = UIViewAutoresizing.FlexibleWidth,
                    Font                      = font,
                    Lines                     = 0,
                    TextColor                 = UIColor.Red,
                    AdjustsFontSizeToFitWidth = true
                };
                set.BindFromExpression(label, "TextSizeToFit $string.Join($Environment.NewLine, $GetErrors())");
                scrollView.AddSubview(label);
            }
        }
Exemplo n.º 41
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            View.BackgroundColor = UIColor.White;

            var scrollView = new UIScrollView(new RectangleF(0, 0, View.Frame.Width, View.Frame.Height))
            {
                ScrollEnabled    = true,
                ContentSize      = new SizeF(View.Bounds.Size.Width, View.Bounds.Size.Height),
                AutoresizingMask = UIViewAutoresizing.FlexibleDimensions
            };

            View.AddSubview(scrollView);

            using (var set = new BindingSet <LocalizableViewModel>())
            {
                UIFont font = UIFont.SystemFontOfSize(10);

                var label = new UILabel(new RectangleF(20, 0, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green,
                    Font             = font
                };
                set.BindFromExpression(label, "Text $i18n.AddText");
                scrollView.AddSubview(label);

                label = new UILabel(new RectangleF(20, 25, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green,
                    Font             = font
                };
                set.BindFromExpression(label, "Text $i18n.EditText");
                scrollView.AddSubview(label);

                label = new UILabel(new RectangleF(20, 50, View.Frame.Width - 40, 25))
                {
                    AutoresizingMask = UIViewAutoresizing.FlexibleWidth,
                    TextColor        = UIColor.Green,
                    Font             = font
                };
                set.BindFromExpression(label, "Text $i18n.DeleteText");
                scrollView.AddSubview(label);

                var textField = new UITextField(new RectangleF(20, 75, View.Frame.Width - 40, 30))
                {
                    AutoresizingMask       = UIViewAutoresizing.FlexibleWidth,
                    BorderStyle            = UITextBorderStyle.RoundedRect,
                    ShouldChangeCharacters = (field, range, replacementString) => false
                };
                set.Bind(textField, field => field.Text).To(model => model.SelectedCulture);
                scrollView.AddSubview(textField);

                var pickerView = new UIPickerView {
                    ShowSelectionIndicator = true
                };
                set.Bind(pickerView, AttachedMemberConstants.ItemsSource)
                .To(model => model.Cultures);
                set.Bind(pickerView, AttachedMemberConstants.SelectedItem)
                .To(model => model.SelectedCulture)
                .TwoWay();

                var toolbar = new UIToolbar {
                    BarStyle = UIBarStyle.Black, Translucent = true
                };
                toolbar.SizeToFit();
                var doneButton = new UIBarButtonItem("Done", UIBarButtonItemStyle.Done,
                                                     (s, e) => textField.ResignFirstResponder());
                toolbar.SetItems(new[] { doneButton }, true);
                textField.SetInputViewEx(pickerView);
                textField.InputAccessoryView = toolbar;
            }
        }