Например, Facebook имеет текст подсказки «Поиск» в текстовом поле «Поиск», когда текстовое поле пусто.
Как добиться этого с помощью текстовых полей WPF ??
.net
wpf
user-interface
textbox
Луи Рис
источник
источник
Ответы:
Вы можете сделать это намного проще с помощью a
VisualBrush
и некоторых триггеров вStyle
:Чтобы повысить возможность повторного использования этого
Style
, вы также можете создать набор прикрепленных свойств для управления фактическим текстом, цветом, ориентацией баннера cue и т. Д.источник
Это мое простое решение, адаптированное от Microsoft ( https://code.msdn.microsoft.com/windowsapps/How-to-add-a-hint-text-to-ed66a3c6 )
источник
IsHitTestVisible="False"
как насчет использования materialDesign HintAssist? Я использую это, вы также можете добавить плавающую подсказку:
Я установил Material Design с пакетом Nuget, в ссылке документации есть руководство по установке
источник
Сделайте это в коде программной части, установив изначально серый цвет текста и добавив обработчики событий для получения и потери фокуса клавиатуры.
Затем обработчики событий:
источник
Вы должны создать настраиваемый элемент управления, унаследовав текстовое поле. Ссылка ниже содержит отличный пример образца текстового поля поиска. Пожалуйста, взгляните на это
http://davidowens.wordpress.com/2009/02/18/wpf-search-text-box/
источник
Вы можете сделать это очень просто. Идея состоит в том, чтобы разместить метку в том же месте, что и текстовое поле. Ваша метка будет видна, если текстовое поле не имеет текста и не в фокусе.
Бонус: если вы хотите иметь значение по умолчанию для вашего текстового поля, обязательно установите его при отправке данных (например: "InputText" = "PlaceHolder Text Here", если пусто).
источник
Другой подход ;-)
это также работает с
PasswordBox
. Если вы хотите использовать его сTextBox
просто обмениватьсяPasswordChanged
сTextChanged
.XAML:
CodeBehind:
источник
Однажды я попал в такую же ситуацию, решил ее следующим образом. Я выполнил только требования к окну подсказок, вы можете сделать его более интерактивным, добавив эффекты и другие вещи к другим событиям, таким как фокус и т. Д.
КОД WPF (я удалил стили, чтобы сделать его читабельным)
Код C #
источник
Другое решение - использовать набор инструментов WPF, например MahApps.Metro. Он имеет множество приятных функций, таких как водяной знак текстового поля:
Controls:TextBoxHelper.Watermark="Search..."
См. Http://mahapps.com/controls/textbox.html
источник
Я использовал события получения и потери фокуса:
Работает хорошо, но текст по-прежнему остается серым. Требуется уборка. Я использовал VB.NET
источник
источник
Это мое мнение:
На мой взгляд, большинство других ответов, включая верхний, имеют недостатки.
Это решение работает при любых обстоятельствах. Чистый XAML, легко повторно используемый.
источник
Я совершаю это с
VisualBrush
и некоторые триггеры вStyle
предложенных:sellmeadog
.@sellmeadog: приложение работает, bt Design не загружается ... появляется следующая ошибка: неоднозначная ссылка на тип. Тип с именем «StaticExtension» встречается как минимум в двух пространствах имен: «MS.Internal.Metadata.ExposedTypes.Xaml» и «System.Windows.Markup». Рассмотрите возможность настройки атрибутов сборки XmlnsDefinition. Я использую .net 3.5
источник
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
на<Trigger Property="Text" Value="">
Для WPF выхода нет. Вы должны имитировать это. См. Этот пример . Второстепенное (нестабильное решение) - разместить пользовательский элемент управления WinForms, который наследуется от TextBox, и отправить сообщение EM_SETCUEBANNER элементу редактирования. т.е.
Кроме того, если вы хотите использовать подход управления WinForm, у меня есть инфраструктура, которая уже включает эту реализацию под названием BitFlex Framework, которую вы можете бесплатно скачать здесь .
Вот статья о BitFlex, если вам нужна дополнительная информация. Вы начнете обнаруживать, что если вы хотите иметь элементы управления в стиле Windows Explorer, которые обычно никогда не выходят из коробки, и поскольку WPF не работает с дескрипторами, вы не можете написать простую оболочку для Win32 или существующего элемента управления, как вы можете с WinForms.
Скриншот:
источник