在ItemSelected

时间:2016-06-22 11:09:41

标签: xamarin.forms

我是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;


        };

    }
}

}

0 个答案:

没有答案