Xamarin形式,我忽略了Behein代码中的OnBackButtonPressed,但是我需要在MVVM中执行此操作

时间:2018-09-19 13:28:23

标签: xamarin xamarin.forms

我需要返回导航栏,但是我想根据MVVM来做。现在我有以下内容。如果可能的话,我想将OnBackButtonPressed逻辑转移到ViewModel

背后的代码

  protected override bool OnBackButtonPressed()
    {
        if(Followers.IsVisible)
        {
            Followers.IsVisible = false;

            FollowersBackground.BackgroundColor = Consts.UNACTIVE_COLOR; 

            ProfileBackground.BackgroundColor = Consts.ACTIVE_COLOR;

            return Profile.IsVisible = true;

        }
        else if(Cars.IsVisible)
        {
            Cars.IsVisible = false;

            CarsBackground.BackgroundColor = Consts.UNACTIVE_COLOR;

            ProfileBackground.BackgroundColor = Consts.ACTIVE_COLOR;

            return Profile.IsVisible = true;
        }
        else if(Calendar.IsVisible)
        {
            Calendar.IsVisible = false;

            CarsBackground.BackgroundColor = Consts.UNACTIVE_COLOR;

            ProfileBackground.BackgroundColor = Consts.ACTIVE_COLOR;

            return Profile.IsVisible = true;
        }

        return base.OnBackButtonPressed();
    }

ViewModel->这是代码的一部分,当按下相应的选项卡时,这些隐藏或显示视图上的选项卡

 private void ProfileDetailsCommandExecute()
    {
        ProfileDetailsItemsEnabled = true;
        FollowersItemsEnabled = false;
        CalendarItemsEnabled = false;
        CarsItemsEnabled = false;
        BackgroundProfileDetails = Consts.ACTIVE_COLOR;
        BackgroundFollowers = Consts.UNACTIVE_COLOR;
        BackgroundCars = Consts.UNACTIVE_COLOR;
        BackgroundCalendar = Consts.UNACTIVE_COLOR;
    }

    private void CalendarCommandExecute()
    {
        ProfileDetailsItemsEnabled = false;
        FollowersItemsEnabled = false;
        CarsItemsEnabled = false;
        CalendarItemsEnabled = true;
        BackgroundProfileDetails = Consts.UNACTIVE_COLOR;
        BackgroundFollowers = Consts.UNACTIVE_COLOR;
        BackgroundCars = Consts.UNACTIVE_COLOR;
        BackgroundCalendar = Consts.ACTIVE_COLOR;
    }

如果您需要代码中的其他内容,我会戴上它。

1 个答案:

答案 0 :(得分:0)

protected override bool OnBackButtonPressed()
{
 var vm = (YourViewModel)BindingContext;
 vm.ProfileDetailsCommandExecute();
 vm.CalendarCommandExecute();
 return base.OnBackButtonPressed();
}

我不知道您到底想执行什么逻辑,但是这段代码将使您能够访问ViewModel而不会破坏MVVM。