【发布时间】:2021-07-12 07:56:27
【问题描述】:
我想制作一个在单击frame 时触发的动画。我已经有一个绑定在GestureRecognizers 上的命令,但这是我的ViewModel 的一部分,将视图代码放入ViewModel 会破坏mvvm。你知道动画代码应该放在哪里吗?(我想执行动画,然后从 ViewModel 执行命令)
【问题讨论】:
标签: xamarin.forms mvvm code-behind
我想制作一个在单击frame 时触发的动画。我已经有一个绑定在GestureRecognizers 上的命令,但这是我的ViewModel 的一部分,将视图代码放入ViewModel 会破坏mvvm。你知道动画代码应该放在哪里吗?(我想执行动画,然后从 ViewModel 执行命令)
【问题讨论】:
标签: xamarin.forms mvvm code-behind
您可以在代码隐藏中运行动画,最后调用您的ViewModel 方法(绑定命令当前执行的操作),在这种情况下不需要命令,只需事件。
xaml
<Image Source="tapped.jpg">
<Image.GestureRecognizers>
<TapGestureRecognizer
Tapped="OnTapGestureRecognizerTapped"/>
</Image.GestureRecognizers>
</Image>
代码隐藏
async void OnTapGestureRecognizerTapped(object sender, EventArgs args)
{
//await the animation
(BindingContext as YourViewModel).CommandAction();
}
视图模型
void CommandAction()
{
...
}
【讨论】:
frame,文档说tapped 已过时,应该改用command。
https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.tapgesturerecognizer.-ctor?view=xamarin-forms#Xamarin_Forms_TapGestureRecognizer__ctor_System_Action_Xamarin_Forms_View__ 如果我错了,抱歉
tapped 直到我找到其他东西,但我仍在等待其他想法^_^。感谢您的帮助。