public TextBox() { TextProperty = new BindableProperty <TextBox, string>(this, string.Empty); KeyboardControlProperty = new BindableProperty <TextBox, bool>(this); KeyboardControlProperty.OnPropertyChanged((t, orig, cur) => _needsKeyboardFocus = cur); MaxLength = int.MaxValue; VisibilityProperty.OnPropertyChanged((t, o, n) => { KeyboardControlProperty.Value = false; _hotControl = -1; }); //reset hot control when it goes invisible }