Por ejemplo, Facebook tiene un texto de sugerencia de "Buscar" en el cuadro de texto Buscar cuando el cuadro de texto está vacío.
¿Cómo lograr esto con los cuadros de texto de WPF?
.net
wpf
user-interface
textbox
Louis Rhys
fuente
fuente
Respuestas:
Puede lograr esto mucho más fácilmente con
VisualBrush
ay algunos desencadenantes en aStyle
:Para aumentar la reutilización de esto
Style
, también puede crear un conjunto de propiedades adjuntas para controlar el texto, el color, la orientación, etc.fuente
Esta es mi solución simple, adaptada de Microsoft ( https://code.msdn.microsoft.com/windowsapps/How-to-add-a-hint-text-to-ed66a3c6 )
fuente
IsHitTestVisible="False"
¿Qué pasa con el uso de materialDesign HintAssist? Estoy usando esto, que también puede agregar una pista flotante:
instalé Material Design con Nuget Package, hay una guía de instalación en el enlace de documentación
fuente
Hágalo en el código subyacente estableciendo el color del texto inicialmente en gris y agregando controladores de eventos para ganar y perder el enfoque del teclado.
Luego, los controladores de eventos:
fuente
Tiene que crear un control personalizado heredando el cuadro de texto. El siguiente enlace tiene un excelente ejemplo sobre la muestra de cuadro de texto de búsqueda. Por favor, mira esto
http://davidowens.wordpress.com/2009/02/18/wpf-search-text-box/
fuente
Puedes hacerlo de una forma muy sencilla. La idea es colocar una etiqueta en el mismo lugar que su cuadro de texto. Su etiqueta será visible si el cuadro de texto no tiene texto y no tiene el foco.
Bonificación: si desea tener un valor predeterminado para su cuadro de texto, asegúrese de configurarlo después al enviar datos (por ejemplo: "InputText" = "PlaceHolder Text Here" si está vacío).
fuente
Otro enfoque ;-)
esto también funciona con
PasswordBox
. Si desea usarlo conTextBox
, simplemente intercambiePasswordChanged
conTextChanged
.XAML:
Código detrás:
fuente
Una vez me metí en la misma situación, la resolví de la siguiente manera. Solo he cumplido con los requisitos de un cuadro de sugerencias, puede hacerlo más interactivo agregando efectos y otras cosas en otros eventos como el enfoque, etc.
CÓDIGO WPF (he eliminado el estilo para que sea legible)
Código C #
fuente
Otra solución es utilizar un kit de herramientas de WPF como MahApps.Metro. Tiene muchas características interesantes, como una marca de agua en un cuadro de texto:
Controls:TextBoxHelper.Watermark="Search..."
Ver http://mahapps.com/controls/textbox.html
fuente
Usé los eventos de enfoque conseguido y perdido:
Funciona bien, pero el texto todavía está en gris. Necesita limpieza. Estaba usando VB.NET
fuente
fuente
Esa es mi opinión:
La mayoría de las otras respuestas, incluida la de arriba, tienen defectos en mi opinión.
Esta solución funciona en todas las circunstancias. XAML puro, fácilmente reutilizable.
fuente
Puedo lograr esto con un
VisualBrush
y algunos disparadores en unStyle
recomienda:sellmeadog
.@sellmeadog: Aplicación en ejecución, bt Design no cargando ... aparece el siguiente error: Referencia de tipo ambigua. Un tipo llamado 'StaticExtension' ocurre en al menos dos espacios de nombres, 'MS.Internal.Metadata.ExposedTypes.Xaml' y 'System.Windows.Markup'. Considere ajustar los atributos XmlnsDefinition del ensamblado. estoy usando .net 3.5
fuente
<Trigger Property="Text" Value="{x:Static sys:String.Empty}">
a<Trigger Property="Text" Value="">
Para WPF, no hay forma. Tienes que imitarlo. Vea este ejemplo . Una secundaria (solución inestable) es alojar un control de usuario de WinForms que hereda de TextBox y enviar el mensaje EM_SETCUEBANNER al control de edición. es decir.
Además, si desea alojar un enfoque de control de WinForm, tengo un marco que ya incluye esta implementación llamado BitFlex Framework, que puede descargar de forma gratuita aquí .
Aquí hay un artículo sobre BitFlex si desea más información. Comenzará a encontrar que si está buscando tener controles de estilo del Explorador de Windows, esto generalmente nunca sale de la caja, y debido a que WPF no funciona con identificadores, generalmente no puede escribir un contenedor fácil alrededor de Win32 o un control existente como puede con WinForms.
Captura de pantalla:
fuente