protected override void OnPointerPressed(PointerPressedEventArgs e) { var point = e.GetPosition(_presenter); var index = CaretIndex = _presenter.GetCaretIndex(point); var text = Text; if (text != null) { switch (e.ClickCount) { case 1: SelectionStart = SelectionEnd = index; break; case 2: if (!StringUtils.IsStartOfWord(text, index)) { SelectionStart = StringUtils.PreviousWord(text, index); } SelectionEnd = StringUtils.NextWord(text, index); break; case 3: SelectionStart = 0; SelectionEnd = text.Length; break; } } e.Device.Capture(_presenter); e.Handled = true; }