1

您好,感谢您的关注!

背景

这是对这个问题的扩展:

如何在 WPF 包装面板内向上或向下滑动子项?

在其中我询问了如何WrapPanel通过单击按钮以编程方式向上或向下滚动内容。这个问题得到了很好的回答,并且接受的解决方案效果很好。

问题

现在我的缩略图在WrapPanel单击按钮时向上和向下滚动,如何遮盖以WrapPanel使图块在框架外时不显示?例如,我的StackPanel上方有一个WrapPanel包含向上和向下滚动按钮的按钮,但是当我向下滚动时,缩略图会覆盖StackPanel它们(和按钮)的上方。到目前为止,这是我的 XAML,请注意缩略图是WrapPanel在运行时添加到的:

更新

使用 Dave Clemmer 的 XAML,我的布局更加稳定,但我最终还是得到了超过它上面的WrapPanel内容StackPanel。请查看滚动事件之前和之后的这些屏幕截图:

滚动前-

滚动前

滚动后- 在此处输入图像描述

更新 2

根据下面戴夫的评论将画布设置为红色背景。

滚动前-

在此处输入图像描述

滚动后-

在此处输入图像描述

4

2 回答 2

2

好吧,我不会称之为直观,但最后,这奏效了:

 <Border Grid.Row="1" Background="Transparent" ClipToBounds="True">       
            <Canvas>
                <WrapPanel x:Name="spContainer"  
                   Width="{Binding ActualWidth,  
                           RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">
                </WrapPanel>
            </Canvas>
 </Border>

添加边框就可以了。感谢戴夫的所有帮助!

于 2012-01-01T22:01:23.987 回答
1

听起来您不想要滚动条(否ScrollViewer)并希望StackPanel修复。StackPanel将和保留WrapPanel在单独的Grid行中,例如:

<Grid> 
    <Grid.RowDefinitions> 
        <RowDefinition Height="Auto" /> 
        <RowDefinition Height="*"/> 
    </Grid.RowDefinitions> 
    <StackPanel Grid.Row="0" Height="150" HorizontalAlignment="Left" Margin="30,10,10,10" Name="stackPanel1" VerticalAlignment="Top" Width="Auto" Orientation="Horizontal" >  
        <Label Content="Home Navigator v0.1" FontFamily="Tahoma" FontSize="30" FontWeight="Bold" Foreground="White" />  
        <Button Content="Close" Height="50" Click="Button_Click" VerticalAlignment="Top"></Button>  
        <Button Content="Scroll Down" Height="50" Click="ScrollDown" VerticalAlignment="Top"></Button>  
    </StackPanel>  
    <Canvas Grid.Row="1">  
        <WrapPanel x:Name="spContainer"  
                   Width="{Binding ActualWidth,  
                           RelativeSource={RelativeSource AncestorType={x:Type Canvas}}}">  
        </WrapPanel>      
    </Canvas>  
</Grid>
于 2012-01-01T21:00:12.560 回答