我正在尝试创建一个类似于下图的进度条,它处于不确定的效果中,所以它只是一个反复循环的动画。
我遇到的问题是我从哪里开始?
我对此的主要逻辑是我需要将一个矩形覆盖在另一个矩形之上,然后应用某种动画来使顶部矩形移动,然后循环同样的东西。
我可以在 Blend 的情节提要中做到这一点,但我认为这不是实现这一目标的最佳方式。
谁能指出我正确的方向?
编辑:
工作 XAML:
<Style x:Key="{x:Type ProgressBar}"
TargetType="{x:Type ProgressBar}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ProgressBar}">
<Grid MinHeight="14"
MinWidth="200"
Background="#FFF0F0F0">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="Determinate" />
<VisualState x:Name="Indeterminate">
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="00:00:00"
Storyboard.TargetName="PART_Indicator"
Storyboard.TargetProperty="Background">
<DiscreteObjectKeyFrame KeyTime="00:00:00">
<DiscreteObjectKeyFrame.Value>
<SolidColorBrush>#FFF0F0F0</SolidColorBrush>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border x:Name="PART_Track"
CornerRadius="0"
BorderThickness="1">
<Border.BorderBrush>
<SolidColorBrush Color="#FFF0F0F0" />
</Border.BorderBrush>
</Border>
<Border x:Name="PART_Indicator"
CornerRadius="0"
BorderThickness="0"
HorizontalAlignment="Left"
Background="#FF4B8BC2"
Margin="0,-1,0,1">
<Border.BorderBrush>
<SolidColorBrush Color="#FFD7D7D7" />
</Border.BorderBrush>
<Grid ClipToBounds="True"
x:Name="Animation">
<Border x:Name="PART_GlowRect"
Width="100"
HorizontalAlignment="Left"
Background="#FF4B8BC2"
Margin="-100,0,0,0" />
</Grid>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="#FFF0F0F0" />
</Setter.Value>
</Setter>
<Setter Property="Foreground">
<Setter.Value>
<SolidColorBrush Color="#FF4B8BC2" />
</Setter.Value>
</Setter>
</Style>