使用滚动条

时间:2015-09-28 00:18:58

标签: c# wpf visual-studio xaml

是否可以在没有明确设置高度的情况下使用滚动(多行)TextBox?这是我的示例代码段:

<Grid Grid.Row="6"
      Grid.Column="2"
      Grid.ColumnSpan="2">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Label Grid.Row="0">Heading</Label>
    <TextBox Grid.Row="1"
             SpellCheck.IsEnabled="True"
             TextWrapping="Wrap"
             AcceptsReturn="True"
             VerticalScrollBarVisibility="Auto"></TextBox>
</Grid>

这里的问题是TextBox会自行调整大小,具体取决于用户输入的行数而不依赖于保持相同的大小和滚动。

2 个答案:

答案 0 :(得分:0)

只需添加VerticalAlignment="Top"

即可
  <Grid Grid.Row="6"
  Grid.Column="2"
  Grid.ColumnSpan="2">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Label Grid.Row="0">Heading</Label>
    <TextBox 
        VerticalAlignment="Top"
        Grid.Row="1"
         SpellCheck.IsEnabled="True"
         TextWrapping="Wrap"
         AcceptsReturn="True"
         VerticalScrollBarVisibility="Auto"></TextBox>
</Grid>

答案 1 :(得分:0)

这将帮助您入门。由于您没有明确提出要求,因此很难找到合适的解决方案。如果您提出更明确的要求,我可以为您制作更好的版本。

<Window ...>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="476*"/>
            <ColumnDefinition Width="45*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="8*"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <TextBox x:Name="textBox" HorizontalAlignment="Left" Width="{Binding Value, ElementName=HorizontalSB}" Height="{Binding Value, ElementName=VerticalSB}" Margin="30,37,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" />
        <ScrollBar x:Name="VerticalSB" Grid.Column="1" HorizontalAlignment="Center" Width="Auto" SmallChange="1" Minimum="50" Value="25" MaxHeight="250" Maximum="1000"/>
        <ScrollBar x:Name="HorizontalSB" Grid.Row="1" VerticalAlignment="Top" Width="Auto" Orientation="Horizontal" VerticalContentAlignment="Center" SmallChange="10" Maximum="1000" Minimum="20" LargeChange="10" Value="75"/>

    </Grid>
</Window>