用于可调整大小的窗口的WPF滚动条

Gre*_*g R 7 wpf scroll scrollviewer wpf-controls

这应该是一个非常简单的任务,但由于某种原因,我在WPF中遇到了很多问题.

这就是我想要发生的事情:我在窗口中有一堆控件,包括扩展器控件.当内容扩展到可见区域下方时,我想要为该窗口设置滚动条.此外,窗口不是固定宽度,可以最大化,调整大小等.

我尝试将ScrollViewer作为窗口中的第一个元素,但它无法正常工作.如果我将高度和宽度设置为自动,则不会滚动,如果我将其设置为特定设置,则会在窗口最大化时创建一个框.

任何帮助将不胜感激!

ben*_*wey 13

我假设你有一些固定的宽度问题.如果您提供XAML的样本,我可以看看我是否可以提供更多帮助.以下工作没有显示框:

<Window x:Class="WpfSample1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">
    <ScrollViewer>
        <StackPanel>
            <Rectangle Height="400" Width="400" Fill="Red" Margin="10" />
            <Rectangle Height="400" Width="400" Fill="Green" Margin="10" />
            <Rectangle Height="400" Width="400" Fill="Blue" Margin="10" />
            <Rectangle Height="400" Width="400" Fill="Yellow" Margin="10" />
        </StackPanel>
    </ScrollViewer>
</Window>
Run Code Online (Sandbox Code Playgroud)


Tim*_*res 10

您应该将ScrollViewer的Horizo​​ntalScrollBarVisibility和VerticalScrollBarVisibility设置为Auto.

这是一个例子:

<Grid>
    <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
        <Canvas Width="400" Height="400">
            <Button Canvas.Left="300">Left 300</Button>
            <Button Canvas.Top="300">Top 300</Button>
        </Canvas>
    </ScrollViewer>
</Grid>
Run Code Online (Sandbox Code Playgroud)

这将替换VS生成的主窗口的内容.

运行它并更改窗口的大小,最大化它,您将滚动条显示和消失.