如何转到另一个xaml页面xamarin.form FlowListView
我在xamarin表单中创建了FlowListView.FlowLoadingTemplate。单击FlowItemTapped命令时,转到其他页面或导航到其他页面 FlowListView xaml:如何转到另一个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
<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选项卡可以转到其他页