Estoy desarrollando una aplicación para enviar algunos comentarios.
Básicamente estoy tratando de hacer TextBox
comentarios, pero estoy acostumbrado a los WinForms MultiLine=true
. Lo configuré MinLines
en 3, que es llegar allí, pero preferiblemente me gustaría que el usuario pueda escribir en cualquier parte de este bloque, como presionar enter y hacer puntos de punto. Por ejemplo:
- Item 1 blah
- Item 2 blahlb lahbvl d
Pero en este momento todo el texto permanece en una línea.
- Item 1 blah - Item 2 blahb blahb blah
Estos comentarios ayudarán a llenar el cuerpo de un correo electrónico que se envía. Puede no tener sentido si no puedo mantener fácilmente el mismo formato al colocar esta cadena en la cadena del cuerpo del correo electrónico (de modo que parezca que lo hace cuando se envía como lo hace cuando se escribe).
¿Puedo lograr lo que busco o debo dejarlo como texto en una línea?
label1.Content = textBox1.Text.Length;
con esta línea, funciona, pero cuando presiono Intro en el contador de cuadro de texto aumentará 2 caracteres. ¿Cómo puedo hacer esta tarea? Por favor, ayúdame.textBox1.Text.Replace("\r\n", " ").Length
. Sin embargo, tenga cuidado: si esto se entiende como retroalimentación del usuario porque su back-end limita el número de caracteres, es posible que deba contar el CR / LF como dos caracteres si así es como lo contará el back-end.Además, si, como yo, agrega controles directamente en XAML (sin usar el editor), puede sentirse frustrado de que no se extienda a la altura disponible, incluso después de establecer esas dos propiedades.
Para hacer que TextBox se estire, configure el
Height="Auto"
.ACTUALIZAR:
En retrospectiva, creo que esto debe haber sido necesario gracias a un estilo predeterminado para TextBoxes que especifica la altura a algún estándar para la aplicación en algún lugar de los recursos de la aplicación. Puede valer la pena comprobar esto si esto te ayudó.
fuente
Aquí está la muestra
XAML
que permitiráTextBox
aceptar texto multilínea y usa sus propias barras de desplazamiento:fuente
Al contrario de @Andre Luus, la configuración
Height="Auto"
no hará elTextBox
estiramiento. La solución que encontré fue establecerVerticalAlignment="Stretch"
fuente
La única propiedad correspondiente en WPF a la
Propiedad Winforms :
TextBox.Multiline = true
Es la WPF propiedad:
TextBox.AcceptsReturn = true
.Todas las demás configuraciones, como
VerticalAlignement
,WordWrap
etc., solo controlan cómo interactúa TextBox en la interfaz de usuario, pero no afecta elMultiline
comportamiento.fuente