0

我有一个滚动查看器的情况,以及该滚动查看器内部的一个包装面板。预期的行为是内容不会左右滚动,只会上下滚动,并且内容会根据需要换行(变得更高)。

<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" Margin="0">
    <Grid x:Name="LayoutRoot">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="330" />
            <ColumnDefinition Width="*"/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="74" />
            <RowDefinition Height="75" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
        </Grid.RowDefinitions>
        <!-- ... other stuff ... -->

        <WrapPanel Grid.Row="2" Grid.Column="0" Grid.ColumnSpan="2" Orientation="Horizontal" Margin="35,0,0,0">
            <Button Style="{StaticResource CreateModelButtonStyle}"
                    CommandParameter="Design"
                    Command="{StaticResource WindowProfileUnconditional}">
                <StackPanel>
                    <TextBlock Style="{StaticResource HomePageButtonMarqeeTextStyle}" Text="Blah Blah"/>
                    <TextBlock Style="{StaticResource HomePageButtonDescriptionTextStyle}" Text="Blah Blah" />
                </StackPanel>
            </Button>

            <!-- A bunch more buttons -->
        </WrapPanel>

        <!-- ... other stuff ... -->

    </Grid>
</ScrollViewer>

相反,我得到的行为是滚动查看器告诉换行面板它可以是任何宽度,因此换行面板的行为类似于堆栈面板和剪辑而不是换行。

有没有办法在完全阻止水平滚动的同时允许垂直滚动?

4

1 回答 1

0

为什么不将 WrapPanel(或 Grid)的 Width 绑定到 ScrollViewer 的 Width 上?

<ScrollViewer x:Name="MyScrollViewer" ...>
    <WrapPanel Width="{Binding ElementName=MyScrollViewer, Path=Width}" ... />
</ScrollViewer>

如果您需要绑定到Widthor ,则不是肯定的ActualWidth。如果一个不起作用,请尝试另一个。

于 2014-05-14T13:56:55.133 回答