【发布时间】:2018-10-07 17:19:05
【问题描述】:
我正在使用 xaml 表单开发跨平台应用程序,但尚未弄清楚如何调用 ContentView ontapGesture。我可以使用 <local:MailRoomList/> 在 xaml 表单上调用 ContentView,但我无法在 ontap 或点击事件中显示视图。
我曾尝试使用 StackLayoutID.Children.Add(new MailRoomList()); 在 stacklayout 上显示视图,但这不是我想要的。我想在启用后退按钮的内容页面上显示完整的内容视图。
请指教。谢谢
邮箱列表
<?xml version="1.0" encoding="UTF-8"?>
<ContentView xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="xx.xxxx.xx.Views.MailRoomList">
<ContentView.Content>
<StackLayout>
<Label Text="This is my MailRoom List" />
</StackLayout>
</ContentView.Content>
</ContentView>
OnTapGesture
<Frame.GestureRecognizers>
<TapGestureRecognizer Tapped="OnRegisterMail" NumberOfTapsRequired="1"/>
</Frame.GestureRecognizers>
代码隐藏
async void OnRegisterMail(object sender, EventArgs e)
{
await Navigation.PushAsync(new MailRoomList());
}
编辑: 主页
<?xml version="1.0" encoding="utf-8" ?>
<xf1:BottomBarPage
xmlns:xf1="clr-namespace:xx.xxxx.xx.BottomBar"
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:xx.xxxx.xx.Views"
x:Class="xx.xxxx.xx.Views.Home">
<ContentPage x:Name="MailRoomPage" Title="MailRoom" Icon="mailroom.png" xf1:BottomBarPageExtensions.TabColor="Orange" xf1:BottomBarPageExtensions.BadgeCount="5">
<local:MailRoom/>
</ContentPage>
<ContentPage Title="Transport" Icon="transport.png" xf1:BottomBarPageExtensions.TabColor="Green" xf1:BottomBarPageExtensions.BadgeCount="10">
<Label VerticalOptions="Center" HorizontalTextAlignment="Center" Text="Transport" FontSize="Large"/>
</ContentPage>
<ContentPage Title="Communication" Icon="communication.png" xf1:BottomBarPageExtensions.TabColor="Blue" xf1:BottomBarPageExtensions.BadgeCount="3">
<Label VerticalOptions="Center" HorizontalTextAlignment="Center" Text="Communication" FontSize="Large"/>
</ContentPage>
<ContentPage Title="HSE" Icon="hse.png" xf1:BottomBarPageExtensions.TabColor="Red" xf1:BottomBarPageExtensions.BadgeCount="2">
<Label VerticalOptions="Center" HorizontalTextAlignment="Center" Text="HSE" FontSize="Large"/>
</ContentPage>
<ContentPage Title="Meeting" Icon="meeting.png" xf1:BottomBarPageExtensions.TabColor="DarkCyan" xf1:BottomBarPageExtensions.BadgeCount="5">
<Label VerticalOptions="Center" HorizontalTextAlignment="Center" Text="Meeting" FontSize="Large"/>
</ContentPage>
从上面的主页我调用我的视图<local:MailRoom/>,它正在调用另一个视图MailRoomList。这就是我需要您就如何从另一个内容视图调用内容视图提出建议的地方。
【问题讨论】:
-
您应用的 MainPage 是 NavigationPage 吗?
-
是的,首页是登录屏幕后的导航页。 Application.Current.MainPage = new NavigationPage(new Home());
-
您是否检查了 OnRegisterMail 函数是否在 Tapping 后实际被调用?也试试 Xamarin.Forms.Device.BeginInvokeOnMainThread(() => { await Navigation.PushAsync(new MailRoomList()); });
-
如果这不起作用,请在您的主页后面发布 xaml 和代码隐藏。
-
这不起作用,抛出错误无法从视图转换为 xamarin.forms.page。我从另一个角度打电话。
标签: xamarin xamarin.forms