网格列中的WPF ScrollViewer

时间:2016-01-25 21:30:21

标签: c# wpf xaml

当窗口的宽度小于第一列中文本的宽度时,我需要显示水平滚动条。

<Window x:Class="Sample.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300"/> 
        <ColumnDefinition Width="80"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <ScrollViewer Grid.Column="0" >
        <TextBlock Text="Very looooong text" FontSize="30"/>
    </ScrollViewer>

    <Border Grid.Column="1" Background="Red"/>
    <Border Grid.Column="2" Background="Green"/>

</Grid>
</Window>

最好的方法是什么?

- 编辑 当用户首先从右向左拖动窗口的右边框时,我需要缩小第三列直到它消失,然后我需要缩小第二列直到它消失,然后当窗口的宽度小于文本时需要显示水平滚动条

1 个答案:

答案 0 :(得分:0)

您可以将第一列的宽度设置为静态值(300),以便在调整窗口大小时不会更改列的宽度。如果设置动态值,ScrollViewer将按预期工作。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="300*" MaxWidth="300"/>
        <ColumnDefinition MinWidth="80" MaxWidth="80"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>

    <ScrollViewer Grid.Column="0" HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Hidden" >
        <TextBlock Text="Very looooong text" FontSize="30"/>
    </ScrollViewer>

    <Border Grid.Column="1" Background="Red"/>
    <Border Grid.Column="2" Background="Green"/>

</Grid>

PS:ScrollViewer的宽度必须小于TextBlock,并且滚动将起作用