示例#1
0
        protected override void OnDetachingFrom(Entry bindable)
        {
            var controller = EntryBind.GetModel(bindable);

            bindable.Completed         -= BindableOnCompleted;
            bindable.TextChanged       -= BindableOnTextChanged;
            controller.FocusRequested  -= ControllerOnFocusRequested;
            controller.PropertyChanged -= ControllerOnPropertyChanged;

            base.OnDetachingFrom(bindable);
        }
示例#2
0
        protected override void OnAttachedTo(Entry bindable)
        {
            base.OnAttachedTo(bindable);

            var controller = EntryBind.GetModel(bindable);

            bindable.Completed         += BindableOnCompleted;
            bindable.TextChanged       += BindableOnTextChanged;
            controller.FocusRequested  += ControllerOnFocusRequested;
            controller.PropertyChanged += ControllerOnPropertyChanged;
        }
示例#3
0
        private void BindableOnCompleted(object sender, EventArgs e)
        {
            var entry      = (Entry)sender;
            var controller = EntryBind.GetModel(entry);
            var ice        = new EntryCompleteEvent();

            controller.HandleCompleted(ice);
            if (!ice.HasError)
            {
                ElementHelper.MoveFocusInPage(entry, true);
            }
        }
示例#4
0
        private void BindableOnTextChanged(object sender, TextChangedEventArgs e)
        {
            if (updating)
            {
                return;
            }

            var entry      = (Entry)sender;
            var controller = EntryBind.GetModel(entry);

            controller.Text = e.NewTextValue;
        }
示例#5
0
        private void ControllerOnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            var entry = AssociatedObject;

            if (entry is null)
            {
                return;
            }

            if (e.PropertyName == nameof(EntryModel.Text))
            {
                var controller = EntryBind.GetModel(entry);
                updating   = true;
                entry.Text = controller.Text;
                updating   = false;
            }
            else if (e.PropertyName == nameof(EntryModel.Enable))
            {
                var controller = EntryBind.GetModel(entry);
                entry.IsEnabled = controller.Enable;
            }
        }