使WPF TextBox伸展到可用空间,而不是使用Text增长

时间:2014-03-11 08:28:13

标签: c# .net wpf

如何在具有三个点的按钮之前进行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

2 个答案:

答案 0 :(得分:3)

在DockPanel上拉伸TextBox集LastChildFill="true"并最后添加TextBox。

顺便说一下。如果您使用的是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 :(得分:1)

您可以将TextBox的MaxWidth设置为您想要留在其中的空间的宽度。这将需要一些加法和减法,也许还有一点估计,但它会起作用。让它实际拉伸似乎有点奇怪,但如果你真的特别需要它,那么一个示例设置可能是:

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