Wpf 如何在ScrollViewer中使用流布局?

Wpf 如何在ScrollViewer中使用流布局?,wpf,xaml,Wpf,Xaml,我有一个滚动查看器的情况,滚动查看器内部有一个环绕面板。预期的行为是内容不会向左和向右滚动,只会向上和向下滚动,并且内容会根据需要进行包装(变得更高) <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Hidden" Margin="0"> <Grid x:Name="LayoutRoot"> <Grid.ColumnDefiniti

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

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

取而代之的是,滚动查看器告诉包裹面板它可以是任何宽度,因此包裹面板的行为类似于堆栈面板和剪辑,而不是包裹


有什么方法可以在完全阻止水平滚动的同时允许垂直滚动吗?

为什么不将WrapPanel(或网格)的宽度绑定到ScrollViewer的宽度

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


如果需要绑定到
宽度
实际宽度
,则为非正值。如果其中一个不起作用,请尝试另一个。

可能重复的(当然,这是Silverlight的答案,但在这里也适用)不是重复的。它禁用滚动,但不强制将内容的宽度设置为滚动查看器的宽度,并且由于正在使用WrapPanel,因此需要设置内容宽度,否则将无法正确包装项目。