【发布时间】:2020-09-15 09:25:41
【问题描述】:
我有一个 ContentView 订阅了来自 ViewModel 的 MessagingCenter 消息(为了通过不将视图耦合到 viewModel 来维护 mvvm 模式)。
当ContentView 收到消息时,我希望它执行动画以使滑动视图可见,如下所示:
MessagingCenter.Subscribe<SideMenuViewModel>(this, "IsMenuOpen", async (sender) =>
{
if (sender.IsMenuOpen)
{
MainSwipeView.Open(OpenSwipeItem.RightItems);
await SwipeContent.ScaleYTo(1, 300, Easing.SinOut);
}
else
{
MainSwipeView.Close();
await SwipeContent.ScaleYTo(1, 300, Easing.SinOut);
}
});
此动画与我在同一文件上的其他事件侦听器中的动画相同,并且效果很好。但是,在MessagingCenter 中,执行链运行良好,它调用了动画方法,但没有发生动画。
这可能是线程问题吗? await 和 BeginInvokeOnMainThread 我都试过了,但都没有成功。
【问题讨论】:
-
如何从消息中心实际发送数据,也添加一下
-
@Blu 这并不真正相关,因为订阅者在获取消息方面工作得非常好,但只是动画方法在被调用时不起作用。
-
现在可以用了吗?
标签: c# xamarin animation xamarin.forms messagingcenter