在WPF中滚动背景动画

时间:2014-04-19 21:30:14

标签: c# wpf vb.net xaml

这是我的代码:

<DrawingBrush Viewport="0,0,16,16" ViewportUnits="Absolute" Stretch="None" TileMode="Tile" x:Key="dbCheckerBoard">
    <DrawingBrush.Drawing>
        <DrawingGroup>
            <GeometryDrawing Brush="LightGray">
                <GeometryDrawing.Geometry>
                    <GeometryGroup>
                        <RectangleGeometry Rect="0,0,8,8"/>
                        <RectangleGeometry Rect="8,8,8,8"/>
                    </GeometryGroup>
                </GeometryDrawing.Geometry>
            </GeometryDrawing>
            <GeometryDrawing Brush="White">
                <GeometryDrawing.Geometry>
                    <GeometryGroup>
                        <RectangleGeometry Rect="8,0,8,8"/>
                        <RectangleGeometry Rect="0,8,8,8"/>
                    </GeometryGroup>
                </GeometryDrawing.Geometry>
            </GeometryDrawing>
        </DrawingGroup>
    </DrawingBrush.Drawing>
</DrawingBrush>

为我的控制元素提供以下背景:

现在我想轻轻滚动背景以使其看起来很动画,有人能告诉我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以尝试添加:

<ControlName.Triggers>
    <EventTrigger RoutedEvent="ControlName.Loaded">
        <BeginStoryboard>
            <Storyboard>
                <RectAnimation
                    Storyboard.TargetProperty="Background.Viewport"
                    From="0 0 16 16" To="16 16 16 16" Duration="0:0:1"
                    RepeatBehavior="Forever" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</ControlName.Triggers>

控制使用绘图画笔的ControlName(假设它被用作Background)。

如果你想让它更自动一点,你可以尝试创建一个结合了两者的风格:

<Style x:Key="ScrollingGridStyle" TargetType="Control">
    <Setter Property="Background">
        <Setter.Value>
            <DrawingBrush
                ... Grid background brush
                ...
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <EventTrigger RoutedEvent="Control.Loaded">
            <BeginStoryboard>
                <Storyboard>
                    <RectAnimation
                        Storyboard.TargetProperty="Background.Viewport"
                        From="0 0 16 16" To="16 16 16 16" Duration="0:0:1"
                        RepeatBehavior="Forever" />
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </Style.Triggers>
</Style>

然后使用它:

<TextBlock Style="{StaticResource ScrollingGridStyle}"/>

或者,将其添加到您现有的样式中:

<Style TargetType="TextBox" 
       x:Key="MyPrettyTextBox" 
       BasedOn="{StaticResource ScrollingGridStyle}">

不幸的是,WPF对创建复合样式没有太多支持。

相关问题