Вопрос:
Как заставить 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>
На что это похоже
Лучший ответ:
Чтобы растянуть свой 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>