2012-01-01 50 views
1

嗨,感谢您的期待!如何屏蔽WPF Wrappanel的内容?

背景

这是对这个问题的延伸:

How do I slide child items up or down inside a WPF wrappanel?

在我问我怎么能programattically滚动WrapPanel内容上的按钮点击向上或向下。这个问题很好地回答了,并且接受的解决方案运作良好。

问题

现在,我在WrapPanel滚动缩略图上下按钮上点击,我怎么掩盖WrapPanel,这样当他们框外的地砖不显示?例如,我在WrapPanel上方有一个StackPanel,它拥有向上和向下滚动按钮,但当向下滚动时,缩略图会覆盖它们上方的StackPanel(和按钮)。这里是我的XAML到目前为止,请注意,缩略图被添加到WrapPanel在运行时:

更新

使用大卫克莱默的XAML,我的布局是稳定的,但后来我还是结束了的内容WrapPanel通过上面的StackPanel。请参阅前后滚动事件采取的这些屏幕抓取:

之前滚动功能的

Before Scroll

后无滚动 enter image description here

更新2

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

之前滚动功能的

enter image description here

后无滚动

enter image description here

+0

感谢您的编辑,戴夫。这只是教会了我几件事。未来的问题会更好看!干杯。 – 2012-01-01 20:27:36

+0

如果您需要滚动帮助,则需要使用ScrollViewer发布XAML。 – Paparazzi 2012-01-01 20:38:56

+0

我的荣幸。那么,你想要滚动WrapPanel而不是上面的StackPanel?如果是的话,它会更容易做一些沿的方法1线条更在你前面的问题,并再次把一切都放在一个网格,与StackPanel中在0行和WrapPanel与ScrollViewer中第1行中 – 2012-01-01 20:39:15

回答

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> 

添加边框的伎俩。感谢戴夫为您提供的所有帮助!

+0

很高兴工作。 – 2012-01-01 22:07:48

+0

再次感谢戴夫。如果没有你的帮助,我不可能得到那里。 – 2012-01-01 22:15:30

+0

是不是已经足以在画布上指定cliptobound? – flq 2012-01-01 22:37:31

1

这听起来像你不想滚动条(无ScrollViewer),并希望StackPanel加以固定。请单独Grid行如StackPanelWrapPanel

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

感谢戴夫,您建议的XAML有助于制作更好的布局,但我仍然遇到原始问题。请参阅上面的我的更新。 – 2012-01-01 21:13:50

+0

嗯,奇怪。要么你在Canvas之外的AnimateScroll方法或其他地方渲染图像,要么(我怀疑),Canvas会在其网格行之外展开。你能确定它是哪些问题吗(比如在你的Canvas上放置一个红色背景)? – 2012-01-01 21:30:07

+0

请看上面的新屏幕截图,戴夫。再次感谢! – 2012-01-01 21:35:03