如何转到另一个xaml页面xamarin.form FlowListView

如何转到另一个xaml页面xamarin.form FlowListView,xaml,xamarin.forms,xamarin.android,navigation,Xaml,Xamarin.forms,Xamarin.android,Navigation,我在xamarin表单中创建了FlowListView.FlowLoadingTemplate。单击FlowItemTapped命令时,转到其他页面或导航到其他页面 FlowListView xaml: <StackLayout Padding="10"> <flv:FlowListView FlowColumnCount="2" x:Name="FlowListView" SeparatorV

我在xamarin表单中创建了FlowListView.FlowLoadingTemplate。单击FlowItemTapped命令时,转到其他页面或导航到其他页面

FlowListView xaml:

  <StackLayout Padding="10">
    <flv:FlowListView FlowColumnCount="2"  
                      x:Name="FlowListView"
            SeparatorVisibility="Default"   
            HasUnevenRows="True"                  
            FlowTappedBackgroundColor="Red" FlowIsLoadingInfiniteEnabled="True"
            FlowItemTappedCommand="{Binding ItemTappedCommand}"   
            FlowItemsSource="{Binding Items}">

        <flv:FlowListView.FlowLoadingTemplate>
            <DataTemplate>
                <ViewCell>
                    <Label
                    HorizontalTextAlignment="Center"
                    VerticalTextAlignment="Center"
                    TextColor="Black"
                    Text="Loading..."
                ></Label>
                </ViewCell>
            </DataTemplate>
        </flv:FlowListView.FlowLoadingTemplate>
        <flv:FlowListView.FlowColumnTemplate>
            <DataTemplate >
                <Grid Padding="5">
                    <BoxView Color="#121E22" Opacity="0.8" CornerRadius="6" HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Grid.Row="0">
                    </BoxView>
                    <StackLayout Padding="5" Grid.Row="0">
                        <ff:CachedImage
                            HeightRequest="70" WidthRequest="70" Aspect="AspectFill" 
                            HorizontalOptions="Center" VerticalOptions="Center"
                            DownsampleWidth="70" DownsampleUseDipUnits="true"
                            Source ="{Binding Icon}" DownsampleToViewSize="True"
                            LoadingPlaceholder="Spinner.png" 
                            ErrorPlaceholder= "ErrorImage"
                            CacheDuration= "50"
                            RetryCount= "3"
                            RetryDelay= "600"
                            >
                        </ff:CachedImage>
                        <Label Text="{Binding Title}" TextColor="White" HorizontalOptions="CenterAndExpand" VerticalOptions="CenterAndExpand" HorizontalTextAlignment="Center"/>
                    </StackLayout>
                </Grid>
            </DataTemplate>
        </flv:FlowListView.FlowColumnTemplate>
    </flv:FlowListView>
</StackLayout>

流列表绑定类/cs文件

 public class ItemPageModel: BindableObject
{
    private ItemsPage itemsPage;
    public ItemPageModel(ItemsPage itemsPage)
    {

        this.itemsPage = itemsPage;
        AddItems();
    }

    private void AddItems()
    {
        Items.Add(new DashboardItemList { Title = "Junction List", Icon = "baseline_view_list_white_48.png", Id = ManuItemList.JunctionList });
        Items.Add(new DashboardItemList { Title = "Live Monitoring", Icon = "baseline_visibility_white_48.png" , Id = ManuItemList.LiveMonitoring });
        Items.Add(new DashboardItemList { Title = "Specification", Icon = "baseline_details_white_36.png" , Id = ManuItemList.Specification });
        Items.Add(new DashboardItemList { Title = "Time Setting", Icon = "baseline_settings_applications_white_48.png", Id = ManuItemList.TimeSetting });
        Items.Add(new DashboardItemList { Title = "Fault Logs", Icon = "baseline_add_alert_white_48.png" , Id = ManuItemList.FaultLogs });
        Items.Add(new DashboardItemList { Title = "Linking Status", Icon = "baseline_link_white_48.png" , Id = ManuItemList.LinkingStatus });
        Items.Add(new DashboardItemList { Title = "Linking Status", Icon = "https://farm9.staticflickr.com/8625/15806486058_7005d77438.jpg" });

    }

    private ObservableCollection<DashboardItemList> _items = new ObservableCollection<DashboardItemList>();
    public ObservableCollection<DashboardItemList> Items
    {
        get
        {
            return _items;
        }
        set
        {
            if (_items != value)
            {
                _items = value;
                OnPropertyChanged(nameof(Items));
            }
        }
    }

    public Command ItemTappedCommand
    {
        get
        {
            return new Command(async (sender) =>
            {
                var Item = sender as DashboardItemList;

                await Navigation.PushAsync(new JunctionList());


            });
        }
    }
}
公共类ItemPageModel:BindableObject
{
私人物品;
公共ItemPageModel(ItemsPage ItemsPage)
{
this.itemsPage=itemsPage;
AddItems();
}
私有void附加项()
{
添加(新的仪表板项目列表{Title=“Junction List”,Icon=“baseline\u view\u List\u white\u 48.png”,Id=ManuItemList.JunctionList});
添加(新的DashboardItemList{Title=“Live Monitoring”,Icon=“baseline\u visibility\u white\u 48.png”,Id=ManuItemList.Live Monitoring});
添加(新的仪表板项目列表{Title=“Specification”,Icon=“baseline\u details\u white\u 36.png”,Id=ManuItemList.Specification});
添加(新的仪表板项目列表{Title=“Time Setting”,Icon=“baseline\u settings\u applications\u white\u 48.png”,Id=ManuItemList.TimeSetting});
添加(新的仪表板项目列表{Title=“Fault Logs”,Icon=“baseline\u Add\u alert\u white\u 48.png”,Id=ManuItemList.FaultLogs});
添加(新的仪表板项目列表{Title=“Linking Status”,Icon=“baseline\u link\u white\u 48.png”,Id=ManuItemList.LinkingStatus});
添加(新的仪表板项目列表{Title=“链接状态”,图标=”https://farm9.staticflickr.com/8625/15806486058_7005d77438.jpg" });
}
私有ObservableCollection_items=新ObservableCollection();
公共可观测收集项目
{
得到
{
退货(物品);;
}
设置
{
如果(_items!=值)
{
_项目=价值;
OnPropertyChanged(项目名称);
}
}
}
公共命令项tappedcommand
{
得到
{
返回新命令(异步(发送方)=>
{
var Item=作为仪表板itemlist的发件人;
等待Navigation.PushAsync(newjunctionList());
});
}
}
}
}

我尝试了很多方法去另一个,但我得到了例外或应用程序崩溃

这是我的另一个页面,当我单击该选项卡时,我会转到该页面

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:d="http://xamarin.com/schemas/2014/forms/design"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         mc:Ignorable="d"
         x:Class="MITSAPP.Views.JunctionList">
<ContentPage.Content>

    <StackLayout>
        <Label Text="Welcome to Xamarin.Forms!"
            VerticalOptions="CenterAndExpand" 
            HorizontalOptions="CenterAndExpand" />
    </StackLayout>
</ContentPage.Content>


您需要在App.xaml.cs中将主页设置为导航页面

MainPage = new NavigationPage(new ItemPage());

您还必须使用如下所示的NavigationPage添加详细信息页面

  <MasterDetailPage.Detail>
    <NavigationPage>
      <x:Arguments>
        <pages:YourDetailPage />
      </x:Arguments>
    </NavigationPage>
  </MasterDetailPage.Detail>


然后,您可以从详细信息页面导航到任何页面。

我在我身边尝试了您的代码,但当点击FlowListView项时,我可以导航到另一个页面,我没有问题,这是我的示例,您可以下载以进行测试


我看到你说你是从MasterDetailedPage导航的,如果你还有问题,你能在github上传你的样本吗,我会下载你的样本进行测试。

我已经在App.xaml.cs中尝试过了。像MainPage=newnavigationpage(newmainpage());在另一个页面中,我使用wait-Navigation.PushAsync(new-JunctionList());但我还是遇到了一个异常(对象引用未设置为对象的实例)您不是从MainPage.xaml.cs导航吗?不是,我是从MasterDetailPage导航的,在MasterDetailPage中有一个视图“ItemsPage”。所以我正在从ItemsPage导航到其他内容页。在母版页中已经有itempage item page display选项卡可以转到其他页