UWP Отключить контекстное меню по умолчанию, но отобразить захваты выделения текста

Я добавил MenuFlyout в элемент пользовательского интерфейса TextBlock. Я выделяю несколько слов в TextBlock. Затем, когда я нажимаю и удерживаю, отображаются как MenuFlyout, так и контекстное меню по умолчанию.

Я где-то читал, чтобы установить для Handled значение true в событии ContextMenuOpening, чтобы скрыть контекстное меню по умолчанию.

private void ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
   e.Handled = true;
}

Это хорошо работает. К сожалению, он также скрывает захваты выделения текста на выделенном тексте. Я хотел бы оставить ручки выделения текста включенными, чтобы пользователи могли использовать их для изменения выделенного текста перед выбором операции из настраиваемого всплывающего меню. Есть предложения, как это сделать? Спасибо.

Когда выбран текст, приоритет будет отдан контекстному меню по умолчанию. Вы хотите переопределить его и открыть всплывающее меню вместо контекстного меню по умолчанию?

Dishant 04.09.2018 07:21

да. Вышеупомянутый метод установки e.Handled = true скрывает контекстное меню по умолчанию. К сожалению, он также скрывает захваты выделения текста. (e.Handled = false показывает как контекстное меню по умолчанию, так и захваты выделения текста.) Моя цель - скрыть контекстное меню по умолчанию, но показать захваты выделения текста. Но я не знаю, как это сделать.

Tek Mun 04.09.2018 10:57

Я попытался смоделировать ваш сценарий, но установка `e.Handled = true;` в ContextMenuOpening скрывает только контекстное меню, а не захват выбора.

Dishant 04.09.2018 23:49
ссылка на сайт Я использую Xamarin.UWP, а код находится внутри моего настраиваемого средства визуализации для Label (то есть TextBlock). Я использую .NET-Standard 2.0. Не уверен, что эта информация влияет на его поведение.
Tek Mun 05.09.2018 02:35

Не могли бы вы поделиться некоторым кодом XAML, потому что технически даже настраиваемое контекстное меню не должно появляться, когда установлен e.Handled=true.

Dishant 05.09.2018 05:59
ссылка на сайт Это простой проект Xamarin. (1) Используйте мышь, чтобы выделить несколько слов. (2) Коснитесь выделенного текста. (3) Щелкните в любом месте, чтобы отобразить захваты. Если вы повторите шаги (1) и (2), захват немедленно отобразится.
Tek Mun 05.09.2018 10:26
это - это поведение, которое я испытываю на симуляторе при запуске вашего образца кода, когда установлен e.Handled=true. Это то, что вы хотите от ожидаемого поведения, верно?
Dishant 06.09.2018 00:03

да. Два скриншота, которые я показал выше, были сделаны, когда я запускал его на «Локальном компьютере», а также скомпилировал в режиме выпуска и установил на ПК. Любые предложения о том, как сделать так, чтобы он отображался правильно с помощью захвата выделения текста и без контекстного меню по умолчанию на «Локальном компьютере» и, что более важно, в установленном приложении?

Tek Mun 06.09.2018 02:30

Вы получите захват для выбора, только если используете сенсорное устройство. Для ввода с помощью указателя захват выбора будет недоступен.

Dishant 06.09.2018 07:32

Я использую ноутбук с сенсорным экраном. Захват выбора отсутствует.

Tek Mun 06.09.2018 08:24

@TekMun Просто дважды коснитесь текста, и захват выбора покажет aigan. Установка e.Handled=true в обработчике событий ContextMenuOpening не повлияет на отображаемый захват выбора.

Xie Steven 06.09.2018 08:31

Спасибо. Да, двойное нажатие на текст выделит слово, выделит и покажет захват. Я хотел иметь такое же поведение (как в iOS и Android), когда пользователь может нажать и удерживать, чтобы выбрать несколько слов и появиться настраиваемое всплывающее меню. Думаю, на ПК рекомендуемый жест другой.

Tek Mun 06.09.2018 09:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
12
263
0

Другие вопросы по теме