我正在尝试创建一个自定义主页,其中页面在水平滚动视图中被列为“服务”,因此每个页面都应导航到不同的页面。
我有这样的看法:
<controls:HorizontalScrollView HeightRequest="160"
Orientation="Horizontal"
ItemsSource="{Binding OwnerServicesList}"
x:Name="OwnerServicesSlider"
ItemSelected="OwnerServicesSlider_ItemSelected">
<controls:HorizontalScrollView.ItemTemplate>
<DataTemplate>
<ViewCell>
<StackLayout Margin="10,0,5,0" WidthRequest="100" HeightRequest="100">
<Image HorizontalOptions="Start" Source="{Binding ImgUrl}" WidthRequest="100" HeightRequest="100" />
<Label Style="{StaticResource BoldLabel}" HorizontalTextAlignment="Center" FontSize="13" LineBreakMode="TailTruncation" Text="{Binding Name}" TextColor="Black"/>
</StackLayout>
</ViewCell>
</DataTemplate>
我在为水平滚动视图(类似于列表视图)使用定制控制器时,轻按的每个项目都会引发 ItemTappedEventArgs事件。
在模型内部,我为滚动视图中的每个对象声明了public Page Page { get; set; }
。
我想做的是恢复被点击的元素并恢复存储在其中的Page,以便我可以导航到该特定页面。
到目前为止,我有这样的事情:
private void OwnerServicesSlider_ItemSelected(object sender, ItemTappedEventArgs e)
{
var service = OwnerServicesSlider.SelectedItem as Services;
Navigation.PushAsync(service.Page);
}
它没有显示错误,但是运行时我得到了
InvalidOperationException:'页面必须没有父项。
任何提示将不胜感激!
答案 0 :(得分:0)
正如Jason所说,可能在当前导航结构中存在您要推送的页面,在您推送页面之前,有一种解决方法:
/* 1 */
{
"_id" : ObjectId("5d93fa1a5261dfb4940f166f"),
"hash" : "1",
"block_number" : 1.0,
"transfers" : [
{
"symbol" : "bob",
"from" : "yh",
"to" : "sh",
"amount" : 12321.0
}
]
}
/* 2 */
{
"_id" : ObjectId("5d93fead5261dfb4940f1672"),
"hash" : "3",
"block_number" : 3.0,
"transfers" : [
{
"symbol" : "bob",
"from" : "yh",
"to" : "sh",
"amount" : 444.0
}
]
}