【问题标题】:WPF ScrollViewer in grid's column网格列中的 WPF ScrollViewer
【发布时间】:2016-01-25 21:30:21
【问题描述】:

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

<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>

最好的方法是什么?

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

【问题讨论】:

  • 要获得水平滚动条,您需要在 ScrollViewer 上设置 HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Disabled"
  • @sthotakura,不,它不起作用
  • 我尝试了一个示例应用程序,它适用于我。您可能需要将字体大小增加到 50 左右才能看到效果?
  • 好的,当字体大小较大时,您的解决方案可以工作,但我需要解决方案,当文本开始时不比列宽时。当用户将窗口的宽度更改为更小的宽度时,我需要显示滚动条。

标签: c# wpf xaml


【解决方案1】:

您将第一列的宽度设置为静态值 (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,才能滚动

【讨论】:

  • 好吧,没错,但我需要第一列的静态宽度值,或者至少我需要起始值'x',意思是“不比'x'宽”。在您的解决方案中,第一列与整个窗口一起延伸。
  • 好的,我编辑了我的答案: 是所需的行为。 (也可以指定MinWidth)
  • 等等,现在我看到带有文本的列与第三列同时变窄,这不好。当用户首先从右向左拖动窗口的右边框时,我需要缩小第三列直到它消失,然后我需要缩小第二列,然后当窗口的宽度小于文本时,我需要显示水平滚动条
  • 再次编辑。它会像你描述的那样运行
  • 好的,就是这样。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多