2016-03-10 37 views
0

我有一个Xamarin.Forms项目,我有一个自定义控件,应该在点击时打开一个新页面。不幸的是,当我拨打Navigation.PushAsync(...);时,什么也没有发生。我读过无数StackOverflow问题(such as this one)和Xamarin论坛主题并完成了几次Google搜索,但没有一个解决方案似乎解决了我的问题。
Xamarin.Forms Navigation.PushAsync不工作

  • 我的控制从ContentView继承,因为所有Xamarin.Forms意见 做。
  • src是一个自定义类,其中包含一些数据点,该控件和EventDetailsPage使用 。
  • 我可以确认手势确实是本身工作,但拨打PushAsync()什么都不做。
  • 我尝试过使用NavigationPage这种方式来操纵语句(使它变成myNavigationPage.Navigation.PushAsync(new EventDetailsPage(src));)。
  • 我也试过创建一个构造函数,它需要一个Page并使用它类似于上面的点。

我控制的构造函数:

public EventControl() { 
    InitializeComponent(); 
    GestureRecognizers.Add(new TapGestureRecognizer() { 
     Command = new Command(() => Navigation.PushAsync(new EventDetailsPage(src))) 
    }); 
} 

通常情况下,提出一个新的问题,在计算器上是我的时候没有别的,我试过解决了我的问题,不得已而为之。任何帮助表示赞赏。

+0

是你的页面实际上包含在一个NavigationPage?您是否正在访问该控件的导航属性,或该控件所在页面的导航属性? – Jason

+0

@Jason是的。我的层次结构是'NavigationPage' - >'TabbedPage' - >'ContentPage' - >'ContentView'(作为'EventControl')。至于你的第二个问题,我已经试过了。 –

+0

通常,TabbedPage将成为你的根,每个标签将包含一个带有ContentPage的导航页面(或者只是一个ContentPage,如果该特定标签不需要导航的话)。 – Jason

回答

1

我发现了这个问题。 Keith Rome lead me来看看EventDetailsPage,我注释掉了一行XAML,并解决了这个问题。该行向页面添加自定义控件(与EventControl无关)。我不知道控件的定义或自定义渲染的定义是否导致了奇怪的行为,但删除该行解决了这个问题。

+0

hey greg您是否发现除了删除自定义控件以外的其他任何解决方案此问题 – Yogesh

2

更改您的App.cs这样

public App() 
    { 
     InitializeComponent(); 

     MainPage = new NavigationPage(new MainPage());//Very important add this.. 
     //MainPage = new MainPage(); //not like this   
    } 
+2

此解决方案在内容页面之间导航时适用于我。 –

0

出于不同的原因同样的问题...

我得到了这个问题,在安装Visual Studio的更新,包括Xamarin后。

更新我的所有的Nu​​Get包,通过下面的(第一个命令显示哪些有更新)后,我能解决问题:

Get-Package -updates 
Update-Package <package> 

我怀疑,移除应用程序数据\本地\ Xamarin文件夹(似乎充当缓存)并让它重新填充也可以解决问题。

相关问题