可重复使用的自动滚动画布

时间:2013-01-12 00:41:26

标签: c# wpf animation scroll

好吧,我制作了一个Scolling画布(有时我会在其中放置打开我的程序或执行其他操作的按钮),它工作得很好。但是我尝试将它变成.dll但是我注意到我使用的方法对于.dll来说毫无价值,因为它在drop上自动滚动并且我无法添加更多内容。所以我想要的是一个空白的画布(或任何真正的),自动滚动内容,并让我添加更多的项目。例如:按钮,文本块,标签等,它将滚动所有这些。

编辑:我希望能够将控件从工具箱拖到窗口中,然后在其上添加按钮等,它会自动滚动它们。

以下示例。仅限xaml ..想要以我想要的方式使它必须用c#而不是xaml编码。因为一旦它被添加为用户控件,你就无法向其添加其他控件,工具箱项并期望它们自动滚动..

<Canvas ClipToBounds="True" x:Name="scrollerCanvas" Height="588">
    <Grid x:Name="OurContainer" Height="588" Background="{x:Null}" ClipToBounds="False">
        <Grid.Clip>
            <RectangleGeometry Rect="0,0,1087,588" RadiusX="30" RadiusY="30" />
        </Grid.Clip>
        <StackPanel Height="800" Margin="1">
            <StackPanel.RenderTransform>
                <TranslateTransform x:Name="scroll" />
            </StackPanel.RenderTransform>

        </StackPanel>

        <Grid.Triggers>
            <EventTrigger RoutedEvent="Canvas.Loaded">
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard RepeatBehavior="Forever">
                            <DoubleAnimation 
                                From="620" To="-450"
                                Storyboard.TargetName="scroll" Storyboard.TargetProperty="Y"
                                Duration="0:0:28" SpeedRatio=".8" />
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Grid.Triggers>
    </Grid>
</Canvas>

1 个答案:

答案 0 :(得分:0)

你可以使用带有Canvas的ScrollViewer。