2017-03-04 58 views
0

我有一个ListView。我试图实现的是当我点击一个列表项目时,它应该导航到特定项目的另一个页面。 我收到一条消息,要求我使用导航页面(请参阅代码中的注释)。如何从ListItem导航到其相应的页面?

MainPage.xaml中

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
     xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
     xmlns:local="clr-namespace:App1" 
     x:Class="App1.MainPage" 
     Title="MainPage"> 

<ContentPage.Content> 
    <StackLayout> 
     <Label Text="Dynamic ListView" HorizontalOptions="Center"></Label> 
     <ListView x:Name="lstView" HasUnevenRows="true"> 

     </ListView> 
    </StackLayout> 
</ContentPage.Content> 
</ContentPage> 

MainPage.xaml.cs中

public partial class MainPage : ContentPage 
{ 
    public MainPage() 
    { 
     InitializeComponent(); 
     //BindingContext = this; 

     string[] courses = 
     { 
      "ADO.NET By Example", 
      "Xamarin.Android", 
      "Xamarin.iOS", 
      "Xamarin.Forms", 
      "JAVA EE: Java Server Pages", 
      "JAVA EE: Programming Servlets" 
     }; 

     lstView.ItemsSource = courses; 

     lstView.ItemSelected += async (sender, e) => 
     { 
      if (e.SelectedItem == null) 
      { 
       // don't do anything if we just de-selected the row 
       return; 
      } 
      else 
      { 
       if (e.SelectedItem.ToString() == "ADO.NET By Example") 
       { 
        await Navigation.PushAsync(new Project1()); /// It throws an error here saying I need to use a Navigation Page. 
       } 
      } 
     }; 
    } 
    } 

新页面PROJECT1处于同一水平的MainPage。另外,我发现有些人建议更改GetMainPage()方法中的代码。我的应用中没有GetMainPage()。

回答

1

如果您尝试使用

await Navigation.PushAsync(new Project1()); 

您必须确定您的MaingPage为NavigationPage

MainPage = new NavigationPage(new MainPage()); 

那么你可以传递到Project的项目

await Navigation.PushAsync(new Project1(e.SelectedItem)); 

我建议看看MVVM有一个最干净的代码

+0

我不知道我明白这一点。 – adityawho

+0

您的XF起始点是MainPage(您应该更改您的“MainPage”以使用其他名称...)。在App.cs中,您应该将此MainPage设置为导航页面,就像我在文章 –

+0

中建议的那样https://developer.xamarin.com/samples/xamarin-forms/Navigation/您可以找到很多示例以使用XF中的导航 –

相关问题