2010-12-06 8 views
12

Necesito una buena solución para hacer que un cuadro de texto en una cuadrícula se expanda a su espacio disponible, pero no se expanda de acuerdo con la duración del texto.WPF: ¿Expandir TextBox por ancho disponible pero NO por su contenido?

La mayoría de las soluciones que he encontrado son para hacer un borde ficticio y enlazar a su actualWidth pero es una solución de hacky para mí. La solución de borde también necesita un pequeño margen en el borde, lo cual no es nada agradable. Establecerlo en bajo hará que la IU se comporte de manera muy extraña. No me gusta esta solución Tiene que haber uno mejor? Todo lo que quiero es que el cuadro de texto no se expanda con su contenido. No debería ser tan difícil. Por favor, hágame saber cómo hacer esto.

EDIT:

Una cosa rara que he notado es que el siguiente código hace que la frontera mucho más grande que tiene que ser:

<Grid> 
    <Border Name="dummy1" Background="Red" /> 
    <TextBox Text="23242342343555554234234444444444423423423432344444444" Width="{Binding ActualWidth, ElementName=dummy1}" /> 
</Grid> 

Sustitución de la orden de la frontera y de texto hace que la frontera se ajusta bien al cuadro de texto, pero lo que necesito es todo lo contrario. Como se dijo antes, establecer un Margen (en el borde) a por lo menos 0.5 hace que funcione pero con una interfaz de usuario inestable como resultado.

+1

Si solo tiene un cuadro de texto en una cuadrícula, debería extenderse por defecto a su elemento principal. ¿Estás seguro de que no tienes nada que modifique tu propiedad HorizontalAlignment? ¿Estás hablando del control Grid o algún otro control (como DataGrid o GridView) que llamas grilla? –

Respuesta

2

HorizontalAlignment = Stretch does not help? Los paneles de cuadrícula de AFAIK extienden sus elementos secundarios al espacio disponible en su celda cuando su alineación horizontal está configurada en Estirar.

+0

Sí, pero mi grilla no tiene un tamaño explícito, sus celdas deberían expandirse a su contenido. El problema es que el control de cuadro de texto se expande a su contenido también ... Para mi escenario, está bien si un cuadro combinado se expande a su contenido, pero no para que un cuadro de texto haga lo mismo. También expande la grilla y mi ventana porque estoy usando SizeToContent = WidthAndHeight. –

+0

¿Desea que su cuadro de texto tenga ancho fijo? ¿Es conocido en tiempo de compilación? – Alex

+0

Bueno, no. Debería completar el espacio completo en la celda, pero nunca expandirse con su contenido de texto. –

1

¿Has descubierto cómo solucionar este problema?

Respuesta a su problema de borde: debe colocar su Objeto TextBox dentro del borde.

<Border Background="Red" Padding="3"> 
     <Button Content="Button" /> 
    </Border> 
2

Utilicé DockPanel para ampliar su espacio disponible. También debe establecer Margen:

<DockPanel> 
    <TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DockPanel}, Path=ActualWidth}" Margin="1" /> 
</DockPanel> 
Cuestiones relacionadas