我需要返回导航栏,但是我想根据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;
}
如果您需要代码中的其他内容,我会戴上它。
答案 0 :(得分:0)
protected override bool OnBackButtonPressed()
{
var vm = (YourViewModel)BindingContext;
vm.ProfileDetailsCommandExecute();
vm.CalendarCommandExecute();
return base.OnBackButtonPressed();
}
我不知道您到底想执行什么逻辑,但是这段代码将使您能够访问ViewModel而不会破坏MVVM。