mvvm - 如何使用 MVVM 为社区工具包 RadialGauge 制作动画?
问题描述
我想为 Windows 社区工具包的radialgauge 设置动画,但不幸的是,在 RaisePropertyChanged 之后 UI 不会自行刷新。
这是我的代码:
看法
<TextBlock Grid.Row="0" Text="{Binding RadialGaugeValue}" />
<controls:RadialGauge
x:Name="MyRadialGauge"
Grid.Row="01"
Value="{Binding RadialGaugeValue}"
Minimum="0"
Maximum="100"
StepSize="1"
IsInteractive="False"
TickSpacing="10"
TickWidth="0"
ScaleWidth="4"
ScalePadding="29"
ScaleTickWidth="1"
MinAngle="245"
MaxAngle="115"
Unit="Sparquote"
NeedleWidth="2"
NeedleLength="100"
MaxHeight="250"
Margin="0,20,0,0"
NeedleBrush="{ThemeResource SystemColorHighlightBrush}"
FocusVisualPrimaryBrush="{x:Null}"
FocusVisualSecondaryBrush="Green"
TrailBrush="{ThemeResource SystemColorHotlightBrush}"
ValueStringFormat="."%"">
视图模型
private async Task DoSavingRateAnimation(double myValue)
{
var progress = new Progress<int>(value =>
{
RadialGaugeValue = value;
RaisePropertyChanged("RadialGaugeValue");
});
await SavingRateAnimation(progress, myValue);
}
private Task SavingRateAnimation(IProgress<int> progress, double value)
{
return Task.Run(() =>
{
int i = 0;
while (RadialGaugeValue < value)
{
Task.Delay(100).Wait();
i += 1;
progress.Report(i);
}
});
}
如您所见,radialGauge 不会自行更新。
您知道如何为控件设置动画吗?
解决方案
请 RadialGauge
像下面这样使用双向模型设置值绑定。
Value="{Binding RadialGaugeValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
推荐阅读
- c# - 从 C# 中缺少键的列表创建完整集
- dfa - 将用于电子邮件验证的 NFA 转换为 DFA
- material-ui - 如何从商店获取主题并在 react-admin 上切换应用主题?
- firebase - 在 Firebase 云函数中解压缩 OAuth2 响应
- javascript - 将参数从一个函数传递到另一个函数
- c# - 针对特定选项卡的 C# 打开 URL
- c# - 使用 dotnet run 时无法将 -p 参数传递给 .NET 应用程序
- javascript - Vue组件在我使用时不渲染
标签 - sql - 从 SQL Server 进行 Oracle 转换 - 基于日期的 WeekRange
- python - 如何转换数据框以仅提取值列并创建直方图?