WPF: ¿Expandir TextBox por ancho disponible pero NO por su contenido?
width stretch (3)
Usé DockPanel para ampliar su espacio disponible. Debes establecer Margen también:
<DockPanel>
<TextBox Width="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DockPanel}, Path=ActualWidth}" Margin="1" />
</DockPanel>
Necesito una buena solución para hacer un cuadro de texto en una cuadrícula para expandirlo a su espacio disponible pero no expandirlo según la duración del texto.
La mayoría de las soluciones que he encontrado son para hacer un borde ficticio y vincular a su actual ancho pero es una solución 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.
EDITAR:
Una cosa extraña que noté es que el siguiente código hace que el borde sea mucho más grande de lo que debe ser:
<Grid>
<Border Name="dummy1" Background="Red" />
<TextBox Text="23242342343555554234234444444444423423423432344444444" Width="{Binding ActualWidth, ElementName=dummy1}" />
</Grid>
Reemplazar el borde y el orden de la caja de texto hace que el borde se ajuste al cuadro de texto muy bien, 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.
HorizontalAlignment = Stretch no ayuda? Los paneles de cuadrícula AFAIK extienden sus elementos secundarios al espacio disponible en su celda cuando su alineación horizontal está configurada en Estirar.
¿Has descubierto cómo resolver este problema?
Responda a su problema de borde: debe poner su objeto TextBox dentro del borde.
<Border Background="Red" Padding="3">
<Button Content="Button" />
</Border>