Сделать WPF TextBox растягиваться до свободного места и не расти с помощью Text

c#
Вопрос: Как заставить TextBox растягиваться до кнопки с тремя точками, но не покрывать ее, когда кто-то вводит много текста? Мой MainWindow.xaml На что

Вопрос:

Как заставить TextBox растягиваться до кнопки с тремя точками, но не покрывать ее, когда кто-то вводит много текста?

Мой MainWindow.xaml

<Window x:Class=»Foo.Bar.MainWindow» xmlns=»http://schemas.microsoft.com/winfx/2006/xaml/presentation» xmlns:x=»http://schemas.microsoft.com/winfx/2006/xaml» xmlns:p=»clr-namespace:Foo.Bar.Properties» Title=»MainWindow» Height=»350″ Width=»525″> <Grid> <StackPanel> <DockPanel> <Label Name=»lblFileName» Content=»File»></Label> <TextBox Name=»txbFileName»></TextBox> <Button Name=»btnOpenFileDialog» Content=»…» HorizontalAlignment=»Right»></Button> </DockPanel> <UniformGrid> <Button Name=»btnFoo» Content=»Foo»></Button> <Button Name=»btnBar» Content=»Bar»></Button> </UniformGrid> </StackPanel> </Grid> </Window>

На что это похоже

Screenshot

Лучший ответ:

Чтобы растянуть свой TextBox, установите LastChildFill=»true» на DockPanel и добавьте TextBox в конце.

Btw. Если вы используете DockPanel, вы можете использовать DockPanel.Dock=»Right» вместо HorizontalAlignment=»Right».

<Grid> <StackPanel> <DockPanel LastChildFill=»True»> <Label Name=»lblFileName» Content=»File»></Label> <Button Name=»btnOpenFileDialog» Content=»…» DockPanel.Dock=»Right»></Button> <TextBox Name=»txbFileName»></TextBox> </DockPanel> <UniformGrid> <Button Name=»btnFoo» Content=»Foo»></Button> <Button Name=»btnBar» Content=»Bar»></Button> </UniformGrid> </StackPanel> </Grid> Ответ №1

Вы можете установить MaxWidth TextBox в ширину пространства, в котором вы хотите оставаться внутри. Это займет немного сложения и вычитания и, возможно, немного оценки, но это сработает. Фактически это растяжение кажется немного странным, но если вы действительно этого хотите, то пример может быть:

<TextBox Name=»txbFileName» MaxWidth=300*></TextBox>

Оцените статью
Добавить комментарий