Parece que debería ser fácil, pero estoy perplejo. En WPF, me gustaría un TextBox que se extienda hasta el ancho de su padre, pero solo hasta un ancho máximo. El problema es que quiero que quede justificado a la izquierda dentro de su padre. Para conseguir que se estire tienes que usar HorizontalAlignment = "Stretch", pero luego el resultado está centrado. He experimentado con HorizontalContentAlignment, pero no parece hacer nada.
¿Cómo hago para que este cuadro de texto azul crezca con el tamaño de la ventana, tenga un ancho máximo de 200 píxeles y se justifique a la izquierda?
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel>
<TextBox Background="Azure" Text="Hello" HorizontalAlignment="Stretch" MaxWidth="200" />
</StackPanel>
</Page>
¿Cuál es el truco?
HorizontalAlignment="Stretch"
elContainer
elemento. (PD, me doy cuenta de que hizo esa pregunta hace más de 6 años.)fuente
Ambas respuestas funcionaron para el problema que dije: ¡Gracias!
Sin embargo, en mi aplicación real, estaba tratando de restringir un panel dentro de un ScrollViewer y el método de Kent no manejó eso muy bien por alguna razón que no me molesté en rastrear. Básicamente, los controles podrían expandirse más allá de la configuración de MaxWidth y derrotaron mi intención.
La técnica de Nir funcionó bien y no tuvo el problema con ScrollViewer, aunque hay una pequeña cosa a tener en cuenta. Desea asegurarse de que los márgenes derecho e izquierdo del TextBox estén configurados en 0 o se interpondrán en el camino. También cambié el enlace para usar ViewportWidth en lugar de ActualWidth para evitar problemas cuando apareció la barra de desplazamiento vertical.
fuente
Puede usar esto para el Ancho de su DataTemplate:
Asegúrese de que su raíz de DataTemplate tenga Margin = "0" (puede usar algún panel como raíz y establecer el Margen para los hijos de esa raíz)
fuente
Funcionalmente similar a la respuesta aceptada, pero no requiere que se especifique el elemento principal:
fuente
Quizás todavía pueda ayudar a alguien que se encuentre con esta pregunta, porque este es un tema muy antiguo.
Yo también necesitaba esto y escribí un comportamiento para solucionarlo. Entonces aquí está el comportamiento:
Entonces puedes usarlo así:
Y finalmente olvidar usar el
System.Windows.Interactivity
espacio de nombres para usar el comportamiento.fuente
yo usaría
SharedSizeGroup
fuente
En mi caso, tuve que poner el cuadro de texto en un panel de pila para estirar el cuadro de texto en el lado izquierdo. Gracias a la publicación anterior. Solo por ejemplo, configuré un color de fondo para ver qué sucede cuando cambia el tamaño de la ventana.
fuente