2017-01-26 139 views
0

动画我试图找出如何触发从我的视图模型动画在我的MVVM Xamarin窗体使用MVVM光框架应用程序没有崩溃我的应用程序。触发按钮按下

我已经了解到,动画不会在视图模型属于,所以我搬到这个逻辑视图。

当按下一个按钮(在我的视图模型绑定到的命令)将消息发送从我的视图模型到我的视图触发动画。

视图模型代码:

public class GamePageViewModel : ViewModelBase 
{ 
    private readonly IDialogService _dialogService; 

    public ICommand NextRoundCommand 
    { 
     get 
     { 
      return new RelayCommand(() => 
      { 
       NextButtonEnabled = false; 
       _game.MoveToNextRound(); 
       UpdateOnScreenText(); 
       NextButtonEnabled = true; 
      },()=> false); 
     } 
    } 

    private bool _nextButtonEnabled = false; 
    public bool NextButtonEnabled 
    { 
     get { return _nextButtonEnabled; } 
     set 
     { 
      _nextButtonEnabled = value; 
      RaisePropertyChanged(()=>NextButtonEnabled); 
     } 
    } 

    private void UpdateOnScreenText() 
    { 
     Messenger.Default.Send(new StartEnlargeAnimationMessage()); 
     Item1Text = _game.CurrentRound.OpenCards[0].Name; 
    } 
} 

在我的XAML视图背后的代码,我有一个执行动画的方法。

查看代码:

public partial class GamePage : ContentPage 
{ 
    public GamePage(GamePageViewModel gamePageViewModel) 
    { 
     BindingContext = gamePageViewModel; 
     InitializeComponent(); 

     Messenger.Default.Register<StartEnlargeAnimationMessage>(this, PlayEnlargeAnimation); 
    } 

    //private bool playingAnimation = false; 
    private async void PlayEnlargeAnimation(StartEnlargeAnimationMessage message) 
    { 
     await RoundLabel.ScaleTo(2, 500, Easing.CubicIn); 
     await RoundLabel.ScaleTo(1, 500, Easing.CubicIn); 
    } 

这工作有点。

的问题是,当用户点击该按钮两次(快速,主动动画中)我得到一个错误“试图当它已经完成了任务过渡到最终状态”。

这个问题似乎是很多个月的已知问题,但还没有固定的(https://bugzilla.xamarin.com/show_bug.cgi?id=41016)。

正如在这个错误报告我试图解决这个办法的意见建议是尽量隐藏/关闭按钮,但尚未发现这样做的全成的方式。

我也试着同步调用动画。

如果您有任何关于如何解决这种情况的见解,将不胜感激。

我(还小),代码库可以在这里找到:https://github.com/sjorsmiltenburg/Cyclades.Shuffler/tree/develop

回答

0

嗯..显然我看着原来的代码在我的模拟器。我不得不卸载程序在我的模拟器上刷新。这样做后,在动画过程中禁用/启用按钮解决了我的问题。虽然我仍然不满意这可能会导致应用程序崩溃。