如何在StackPanel上层叠多边形,这是在ScrollViewer中?

时间:2015-01-21 00:47:49

标签: c# windows-store-apps polygon scrollviewer stackpanel

我有一个水平ScrollViewer,它包含一个StackPanel,最初是空的。 UserControls按钮单击创建,并添加到StackPanel。代码看起来像这样:

<ScrollViewer Grid.Column="1" Grid.Row="0" RequestedTheme="Dark" ScrollViewer.HorizontalScrollMode="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollMode="Disabled" ScrollViewer.VerticalScrollBarVisibility="Hidden">
    <StackPanel x:Name="Container" HorizontalAlignment="Left" VerticalAlignment="Top" Width="Auto">
        <!--User controls added here dynamically-->
    </StackPanel>
</ScrollViewer>

正如您所看到的,ScrollViewer本身就是一个更大的网格。现在我希望将Polygon添加到此ScrollViewer中,但我无法直接将其添加为子项,因为“内容只能设置一次”。如果我在代码隐藏中将它添加到StackPanel(在设置Canvas left,top和ZIndex之后),则将UserControl添加到下面 Polygon。我希望他们不管是不是,要么就是。这甚至可能吗?现在,我的Polygon与ScrollViewer共享相同的Grid Row和Column。这是我的Polygon:

<Polygon x:Name="Gripper" Grid.Column="1" Grid.Row="0" Points="0,0 0,730 -30,750 -30,800 30,800 30,750 0,730 0,100" Stroke="#DEDEDE" StrokeThickness="1" Opacity="1.0" ManipulationMode="TranslateX" ManipulationDelta="Gripper_ManipulationDelta"> 
    <Polygon.Fill>
        <SolidColorBrush Color="#FFFFFF" Opacity="0.9"/>
    </Polygon.Fill>
    <Polygon.RenderTransform>
        <CompositeTransform />
    </Polygon.RenderTransform>
</Polygon> 

我可以在XAML或C#中添加它,但我认为我更愿意在C#中这样做,因为我想根据屏幕大小更改点数。

1 个答案:

答案 0 :(得分:1)

在StackPanel和Polygon之间放置另一个容器控件。中间网格将允许您按正常方式按行和列控制它们的位置。中间StackPanel将使Container堆栈和Polygon堆栈与Container堆栈中的项目分开:

<ScrollViewer>
    <Grid>
        <StackPanel x:Name="Container" HorizontalAlignment="Left" VerticalAlignment="Top" Width="Auto">
            <!--User controls added here dynamically-->
        </StackPanel>
        <Polygon />
    </Grid>
</ScrollViewer>