例如,如果 Value 属性从 0 变为 100,我希望 RadialGauge 能够在例如 250 毫秒内遍历所有中间值。
您可以使用简单DoubleAnimation
的方法来实现您的目标,如下所示:
<Page.Resources>
<Storyboard x:Name="storyboard" >
<DoubleAnimation Storyboard.TargetName="RadialGaugeControl" Storyboard.TargetProperty="Value" From="0" To="100" Duration="0:0:3" EnableDependentAnimation="True"></DoubleAnimation>
</Storyboard>
</Page.Resources>
<Grid>
<controls:RadialGauge x:Name="RadialGaugeControl" Value="70" Minimum="0"
Maximum="180" TickSpacing="20" ScaleWidth="26" Unit="Units" TickBrush="Gainsboro"
ScaleTickBrush="{ThemeResource ApplicationPageBackgroundThemeBrush}"
NeedleWidth="5" TickLength="18" IsInteractive="True">
</controls:RadialGauge>
</Grid>
storyboard.Begin();
storyboard.Begin();
通过这种方式,您至少需要调用代码隐藏。
我希望有一种方法可以在不添加代码隐藏的情况下做到这一点(最好仅限 XAML)。
如果您查看RadialGauge
控件的源代码,该值是一个依赖属性,更改时针的角度发生了Value
更改。您所说的“不添加代码隐藏”,我假设您可以使用一些XAML 行为 来启动动画,但它没有为您提供任何事件。我不认为它比调用更简单storyboard.Begin()
。
您可以选择更改源代码并为其添加动画。Value
更改时,将触发该方法OnValueChanged
,您可以在其中启动动画。然后,您可以为“Microsoft.Toolkit.Uwp.UI.Controls”编译您的自定义版本并在您的项目中使用它。storyboard.Begin()
但我认为这并不比在代码隐藏中编写一行代码更简单。