我正在WinUI3上开发一个桌面应用程序.我的任务是在TextBlock上播放褪色动画(平滑地将不透明度降低到0),然后执行一些操作(例如,更改文本),然后在相同的TextBlock上播放外观动画(平滑地将不透明度增加到1).我需要按这个顺序做这些步骤,但我遇到了麻烦.
// The code for creating and setting up animations has been omitted for brevity.
myAnimation1.InsertKeyFrame(0, 1);
myAnimation1.InsertKeyFrame(1, 0);
_TextBlock.StartAnimation(myAnimation1);
_TextBlock.Inlines.Clear();
_TextBlock.Inlines.Add(GetTextInline(phrase));
myAnimation2.InsertKeyFrame(0, 1);
myAnimation2.InsertKeyFrame(1, 0);
_TextBlock.StartAnimation(myAnimation2);
在这种情况下,只要播放第一个动画,文本就会立即更改,然后其流畅外观也会随之发生变化.换句话说,第一个动画不会播放.她没能挺过来.之前,我在WPF工作,有一个特殊的事件,在动画结束后触发,多亏了它,才有可能建立动画链.但在WinUI3中,我没有发现这样的事件.如果有人知道怎么做,请写信给我.然而,我并没有放弃,并决定以这种方式使用任务类来模拟这种行为.
// The code for creating and setting up animations has been omitted for brevity.
Task task1 = new Task(() =>
{
myAnimation1.InsertKeyFrame(0, 1);
myAnimation1.InsertKeyFrame(1, 0);
_TextBlock.StartAnimation(myAnimation1);
});
Task task2 = task1.ContinueWith((Task task) =>
{
_TextBlock.Inlines.Clear();
_TextBlock.Inlines.Add(GetTextInline(phrase));
});
Task task3 = task2.ContinueWith((Task task) =>
{
myAnimation2.InsertKeyFrame(0, 1);
myAnimation2.InsertKeyFrame(1, 0);
_TextBlock.StartAnimation(myAnimation2);
});
task1.Start();
task3.Wait();
但是这段代码在task3.Wait();"System.AggregateException:"行结束时出现了一个或多个错误.(应用程序访问与另一个线程相关的接口.(0x8001010E(RPC_E_WROR_THREAD)""
我试图删除这一行,但这三个任务根本没有运行.目前,我已经没有办法解决这个问题,并实现我心中的 idea .但我相信有一个解决方案,因为这个框架有很多处理动画的可能性.请帮帮我.