ViewModel事件多次触发

时间:2017-06-01 16:25:44

标签: xamarin.forms mvvm-light

我在我的应用程序中使用MVVM Light,并且我还实现了INavigationService,用于返回/返回页面之间。

所以在一个常见的场景中,它就像这样

MainPage>分类>圆形>数据页。

在DataPage中,我发出获取结果的请求,并根据回调返回的结果调用.GoBack()方法从堆栈弹出当前页面并返回Rounds。 / p>

我注意到的是,如果我首先点击DataPage并调用.GoBack()然后点击另一轮,则回调方法将被触发两次,如果我再次返回三次,并继续像这样。

基本上这意味着将再次调用.GoBack()并导航变得混乱。

我认为这与不清理以前的虚拟机有关,我尝试使用SimpleIOC的UnRegister / Register类更改此行为,但没有运气。

1 个答案:

答案 0 :(得分:0)

在ViewModel类

public void UnsubscribeFromCallBack()
{
  this.event -= method;
}

在.xaml.cs页面

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        PageViewModel vm = (this.BindingContext as PageViewModel);
        vm.UnSubscribeFromCallback();
    }