2016-03-10 5 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))) 
    }); 
} 

Как правило, задавая новый вопрос на StackOverflow мой последний курорт, когда ничего, что я пытался не решить мою проблему. Любая помощь приветствуется.

+0

Ваша страница на самом деле содержится внутри NavigationPage? И получаете ли вы доступ к свойству навигации управления или свойствам навигации страницы, в которой содержится элемент управления? – Jason

+0

@ Джейсон Да. Моя иерархия идет 'NavigationPage' ->' TabbedPage' -> 'ContentPage' ->' ContentView' (как 'EventControl'). Что касается вашего второго вопроса, я пробовал и то, и другое. –

+0

Как правило, TabbedPage будет вашим корнем, и каждая вкладка будет содержать страницу Nav с 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

Это решение работало для меня при навигации между Content Pages. –

0

Та же проблема по разным причинам ...

Я получил эту проблему, после установки обновления в Visual Studio, включая Xamarin.

После обновления всех моих NuGet пакетов, следующая (в первой команде, чтобы показать, какие из них есть обновления), я был в состоянии решить эту проблему:

Get-Package -updates 
Update-Package <package> 

Я подозреваю, удаление AppData \ Local \ Папка Xamarin (которая, по-видимому, действует как кеш) и позволяющая ей переполнять, также может решить проблему.

Смежные вопросы