我是Xamarin的新手,所以请原谅我这是不是很明显。
我创建了一个导航页面,其中主页面有一个列表。选择某个项目后,我将转到该页面。然后能够以标准导航方式返回。以下是我的主页。单击该项时,将使用PushAsync(..)调用该页面。我看到一个空白屏幕,左上角有返回指示。如果我按下它,没有任何反应并且不会返回到主页面。它只是冻结,然后是一条消息,表明它没有响应。如果我将PushAsync()放在主体中,那么工作正常(见下文)。
感谢您的帮助
斯科特。
其中一页简单如下:
public partial class Page3:ContentPage
{
public Page3()
{
InitializeComponent();
}
}
xamal页面:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MultiList.Page3">
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
</ContentPage>
主页:
public partial class MainPage : ContentPage
{
public MainPage()
{
InitializeComponent();
var listView = new ListView
{
RowHeight = 40
};
listView.ItemsSource = new MainItem[] {
new MainItem { Name = "Page 1" ,ID= Constants.FIRST_PAGE},
new MainItem { Name = "Page 2" ,ID= Constants.SECOND_PAGE},
new MainItem { Name = "Page 3" ,ID= Constants.THIRD_PAGE},
};
listView.ItemTemplate = new DataTemplate(typeof(TextCell));
listView.ItemTemplate.SetBinding(TextCell.TextProperty, "Name");
Content = new StackLayout
{
VerticalOptions = LayoutOptions.FillAndExpand,
Children = { listView }
};
//Navigation.PushAsync(new Page2()); this works here as expected
listView.ItemSelected += async (sender, e) => {
var MainItem = (MainItem)e.SelectedItem;
switch(MainItem.ID)
{
case Constants.FIRST_PAGE:
await Navigation.PushAsync(new Page1());
break;
case Constants.SECOND_PAGE:
await Navigation.PushAsync(new Page2());
break;
case Constants.THIRD_PAGE: await Navigation.PushAsync(new Page3());
break;
}
this.ClearValue(ListView.SelectedItemProperty);
listView.SelectedItem = null;
};
}
}
}