水平拉伸WPF Dockpanel内容

时间:2014-10-08 06:55:26

标签: wpf xaml

我有一个DockPanel,它包含一个ScrollViewer [居中对齐]和一个左右按钮。 我的xaml就像

  <DockPanel LastChildFill="True">
 <Button VerticalAlignment="Stretch" HorizontalAlignment="Stretch" DockPanel.Dock="Left">Left</Button>
<Button VerticalAlignment="Stretch" HorizontalAlignment="Stretch" DockPanel.Dock="Right">Right</Button>
  <ScrollViewer Name="scrollAreaPageView"  HorizontalAlignment="Center" VerticalAlignment="Center" 
                                HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto"    
</ScrollViewer>
</DockPanel>

它会按预期生成输出,但是左和右按钮没有完全向左和向右拉伸到ScrollViewer(它们仅在拐角处)。 输出的屏幕截图是enter image description here

如何让它完全拉伸到中心scrollViewer的左右两侧

1 个答案:

答案 0 :(得分:1)

在这种情况下,DockPanel可能并不理想,您可能会在此处使用Grid所需的列定义

样品

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition Width="auto" />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>
    <Button>Left</Button>
    <ScrollViewer Name="scrollAreaPageView"
                  HorizontalAlignment="Center"
                  VerticalAlignment="Center"
                  Grid.Column="1">
    </ScrollViewer>
    <Button Grid.Column="2">Right</Button>
</Grid>

在上面的示例中减去所需空间后可用的空间b


替代方法

我试图用纯xaml做这个方法,这种方法可以帮助你实现所需的无代码。这是一个例子

<Grid>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition Width="{Binding ActualWidth,ElementName=scrollAreaPageView}" />
            <ColumnDefinition />
        </Grid.ColumnDefinitions>
        <Button>Left</Button>
        <Button Grid.Column="2">Right</Button>
    </Grid>
    <ScrollViewer HorizontalAlignment="Center"
                  VerticalAlignment="Center"
                  Margin="50,0"
                  Name="scrollAreaPageView"
                  HorizontalScrollBarVisibility="Auto">

    </ScrollViewer>
</Grid>
Margin元素中的

scrollAreaPageView定义了按钮的最小宽度。试一试,看看是否有帮助