Я добавил MenuFlyout в элемент пользовательского интерфейса TextBlock. Я выделяю несколько слов в TextBlock. Затем, когда я нажимаю и удерживаю, отображаются как MenuFlyout, так и контекстное меню по умолчанию.
Я где-то читал, чтобы установить для Handled значение true в событии ContextMenuOpening, чтобы скрыть контекстное меню по умолчанию.
private void ContextMenuOpening(object sender, ContextMenuEventArgs e)
{
e.Handled = true;
}
Это хорошо работает. К сожалению, он также скрывает захваты выделения текста на выделенном тексте. Я хотел бы оставить ручки выделения текста включенными, чтобы пользователи могли использовать их для изменения выделенного текста перед выбором операции из настраиваемого всплывающего меню. Есть предложения, как это сделать? Спасибо.
да. Вышеупомянутый метод установки e.Handled = true скрывает контекстное меню по умолчанию. К сожалению, он также скрывает захваты выделения текста. (e.Handled = false показывает как контекстное меню по умолчанию, так и захваты выделения текста.) Моя цель - скрыть контекстное меню по умолчанию, но показать захваты выделения текста. Но я не знаю, как это сделать.
Я попытался смоделировать ваш сценарий, но установка `e.Handled = true;` в ContextMenuOpening скрывает только контекстное меню, а не захват выбора.
Не могли бы вы поделиться некоторым кодом XAML, потому что технически даже настраиваемое контекстное меню не должно появляться, когда установлен e.Handled=true.
e.Handled=true. Это то, что вы хотите от ожидаемого поведения, верно?
да. Два скриншота, которые я показал выше, были сделаны, когда я запускал его на «Локальном компьютере», а также скомпилировал в режиме выпуска и установил на ПК. Любые предложения о том, как сделать так, чтобы он отображался правильно с помощью захвата выделения текста и без контекстного меню по умолчанию на «Локальном компьютере» и, что более важно, в установленном приложении?
Вы получите захват для выбора, только если используете сенсорное устройство. Для ввода с помощью указателя захват выбора будет недоступен.
Я использую ноутбук с сенсорным экраном. Захват выбора отсутствует.
@TekMun Просто дважды коснитесь текста, и захват выбора покажет aigan. Установка e.Handled=true в обработчике событий ContextMenuOpening не повлияет на отображаемый захват выбора.
Спасибо. Да, двойное нажатие на текст выделит слово, выделит и покажет захват. Я хотел иметь такое же поведение (как в iOS и Android), когда пользователь может нажать и удерживать, чтобы выбрать несколько слов и появиться настраиваемое всплывающее меню. Думаю, на ПК рекомендуемый жест другой.





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