我有问题/疑问吗?
我在自定义导航菜单中创建了一个按钮,因此当我单击该按钮时,它会转到例如Page1。但是现在我只想在当前活动页面不等于Page1的情况下使按钮处于活动状态。这有可能吗?
答案 0 :(得分:0)
如果我的理解正确,那么您想在显示Page1时禁用该按钮。
大多数(如果不是全部)Xamarin Forms控件都具有IsEnabled
属性,因此您希望在false
出现时将其设置为Page1
,在出现true
时将其设置为ContentPage
消失了。 onAppearing
具有OnDisappearing
和ContentPage
个虚拟方法,当页面分别出现和消失时,您可以重写它们以运行代码。
但是,上下文很重要。我对您如何设置自定义导航菜单一无所知,我无法确切地说出如何做到这一点。 OnAppearing
的{{1}}方法中是否有对按钮的引用?如果不是,则需要某种方式来获取对按钮的引用,或者如果按钮正在使用绑定,则需要对按钮所绑定到的视图模型的引用(假设您正在为的IsEnabled
属性使用绑定)按钮),以设置适当的属性以禁用/启用按钮。
编辑:哦,您看到的实际问题是,是否可以看到当前的活动页面。您可以检查Application.Current.MainPage
来查看当前处于活动状态的页面,但是如果它是NavigationPage
,则必须检索导航堆栈中的最后一页才能查看实际显示的页面。同样,对于任何其他“容器”页面(例如TabbedPage
),您也必须查看容器页面实际显示的页面。对于TabbedPage
,您将必须检查当前选择的选项卡并获取在那里显示的页面,然后,如果这是NavigationPage
,则必须再次检查堆栈中的最后一个页。