我正在尝试创建一个类似于下图所示的进度条,它处于不确定效果中,所以它只是一个反复循环的动画。
我遇到的问题是我从哪里开始?
我对此的主要逻辑是,我需要在另一个上面叠加一个矩形,然后应用某种动画来使顶部矩形移动然后循环同样的东西。
我可以在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>
答案 0 :(得分:1)
我认为你应该首先阅读ProgressBar Styles and Templates。 ProgressBar
有一些命名的部分,例如PART_Indicator
或PART_Track
。它们通过名称识别,以便在正确的位置使用。它还有2 CommonStates
:Determinate
用于显示实际进度,Indeterminate
用于显示进度。您不必担心叠加层。如果您正确命名模板的某些部分,它将自动为您完成。