【问题标题】:Xamarin Forms Animation MVVM wayXamarin Forms Animation MVVM 方式
【发布时间】:2021-07-12 07:56:27
【问题描述】:

我想制作一个在单击frame 时触发的动画。我已经有一个绑定在GestureRecognizers 上的命令,但这是我的ViewModel 的一部分,将视图代码放入ViewModel 会破坏mvvm。你知道动画代码应该放在哪里吗?(我想执行动画,然后从 ViewModel 执行命令)

【问题讨论】:

    标签: xamarin.forms mvvm code-behind


    【解决方案1】:

    您可以在代码隐藏中运行动画,最后调用您的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__ 如果我错了,抱歉
    • 我不知道这一点,我仍然在需要时使用它,没有问题,但如果你不想使用它,因为它已经过时,那么你需要使用命令,因为你想按照 mvvm 模式,它应该在 vm 中......我们回到了起点。
    • 我将使用tapped 直到我找到其他东西,但我仍在等待其他想法^_^。感谢您的帮助。
    猜你喜欢
    • 2017-08-13
    • 1970-01-01
    • 2019-01-25
    • 2021-06-29
    • 2017-12-04
    • 2022-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-28
    相关资源
    最近更新 更多