ScrollViewer左侧和右侧的WPF按钮

时间:2014-09-12 05:43:03

标签: .net wpf xaml

我正在使用ScrollViewer,它位于Grid控件内部,其对齐方式是屏幕的中心。 Scrolllviewer中有一个Web浏览器控件,高度和宽度因网页大小而异。如果高度太大,则会出现scrollviewer滚动条 粗糙的xaml就像这样

<Grid>
 <ScrollViewer HAlign="Center" RAlign="Center">
   <Browser/>
 </ScrollViewer/>
</Grid>

现在我需要一个按钮,其位置始终保留为滚动查看器,另一个按钮始终适合滚动查看器并垂直居中于屏幕

如果我在scrollviewer中放置按钮会发生什么,如果浏览器的高度太长,按钮也会下降。 样本布局可以看起来像它 enter image description here

1 个答案:

答案 0 :(得分:1)

以下是我如何使用DockPanel进行相同的

<Grid>
    <DockPanel LastChildFill="True" HorizontalAlignment="Center" VerticalAlignment="Center" MaxWidth="500">
        <Button Content="Prev page" DockPanel.Dock="Left"/>
        <Button Content="Next page" DockPanel.Dock="Right"/>
        <ScrollViewer>
            <WebBrowser Source="http://www.google.com"/>
        </ScrollViewer>
    </DockPanel>
</Grid>

结果

result

以上只是展示DockPanel

使用的一个例子

使用网格

您可以使用带有列定义的网格来启用stretch to available space或* width

例如

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*" />
        <ColumnDefinition Width="4*"
                          MaxWidth="500" />
        <ColumnDefinition Width="1*" />
    </Grid.ColumnDefinitions>
    <Button Content="Prev page"
            DockPanel.Dock="Left" />
    <ScrollViewer Grid.Column="1">
        <WebBrowser Source="http://www.google.com" />
    </ScrollViewer>
    <Button Content="Next page"
            DockPanel.Dock="Right"
            Grid.Column="2" />
</Grid>

上面的示例将网格划分为3列,宽度比例为1:4:1。这样就可以使用定义的比例分配可用空间。另外,我已将浏览器列的最大宽度设置为500像素,这将在达到定义的宽度后启用按钮拉伸。