gpt4 book ai didi

wpf - 自定义平面进度条

转载 作者:行者123 更新时间:2023-12-02 01:47:27 25 4
gpt4 key购买 nike

我正在尝试创建一个类似于下图的进度条,它处于不确定效果中,因此它只是一个一遍又一遍循环的动画。

enter image description here

我遇到的问题是我从哪里开始?

我的主要逻辑是,我需要将一个矩形覆盖在另一个矩形之上,然后应用某种动画来使顶部矩形移动,然后循环相同的事情。

我可以在 Blend 的 Storyboard中执行此操作,但我认为这不是实现此目的的最佳方法。

有人能指出我正确的方向吗?

编辑:

工作 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>

最佳答案

我认为您应该首先阅读 ProgressBar Styles and TemplatesProgressBar 有一些命名部分,例如 PART_IndicatorPART_Track。它们通过名称进行标识,以便在正确的位置使用。它还具有 2 个CommonStates:Determinate(当您想要显示实际进度时)和 Infiniteate(当您想要显示进度时)。您不必担心重叠。如果您正确命名模板的各个部分,它将自动为您完成。

关于wpf - 自定义平面进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17328557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com