RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1325343
Accepted
Николай Смирнов
Николай Смирнов
Asked:2022-09-05 00:41:26 +0000 UTC2022-09-05 00:41:26 +0000 UTC 2022-09-05 00:41:26 +0000 UTC

如何使用带有 TabBar 的 Shell 全屏打开新页面?

  • 772

大家好!通常,我在 Xamarin 中创建电话应用程序时使用 Shell。AppShell.xaml 页面包含一个 TabBar,其中包含页面的 ShellContent(Page1、Page2)。有必要这样做,以便在按下按钮时,在其中一个页面 (Page1) 上转换到另一个页面 (Page3),并且该页面像全屏一样打开(TabBar 不可见)。

PS 作为参考:在银行应用程序(Tinkoff 或 Sberbank)中,底部有一个 TabBar,当您点击卡或帐户时,带有 TabBar 的页面会被新页面完全隐藏。

目前,当单击按钮时,Page3 替换 Page1,并且 TabBar 不会消失。尝试写入 App.xaml.cs MainPage=new NavigationPage( new AppShell());,但它不起作用,只是加载了黑屏。

现在如何实施:

AppShell.xaml(上面没有废话)

 <Shell>
 <TabBar >
    <ShellContent Route="Page1"
                  Title="Page1"
                  Icon="icon_vehicle.png"
                  ContentTemplate="{DataTemplate clientv:Page1}" />
    <ShellContent Route="Page2"
                  Title="Page2"
                  Icon="icon_bookings.png"
                  ContentTemplate="{DataTemplate clientv:Page2}" />
</TabBar>
</Shell>

应用程序.xaml.cs

 public partial class App : Application
 {
    public App()
    {
        InitializeComponent();
        MainPage = new AppShell();
    }
 }

Page1.xaml

<ContentPage>
   <StackLayout>
      <Button  Clicked="Button_Clicked"/>
   </StackLayout>
</ContentPage>

Page1.xaml.cs

[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class Page1 : ContentPage
{
    public Page1()
    {
        InitializeComponent();
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        Shell.Current.GoToAsync(nameof(Page3));
    }
}
xamarin
  • 3 3 个回答
  • 10 Views

3 个回答

  • Voted
  1. Naydanov Artyom
    2022-09-05T19:43:44Z2022-09-05T19:43:44Z

    使 Page3 像 Shell:

    <Shell>
        <ShellContent>
            <ContentPage Title="Page">
                 <!--Содержимое страницы-->
            </ContentPage>
        </ShellContent>
    </Shell>
    

    像这样去:

    Page1.xaml.cs

    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class Page1 : ContentPage
    {
        public Page1()
        {
            InitializeComponent();
        }
    
        private void Button_Clicked(object sender, EventArgs e)
        {
            Application.Current.MainPage = new Page3();
        }
    }
    
    • 1
  2. Best Answer
    B0lver
    2022-09-08T17:53:09Z2022-09-08T17:53:09Z

    导航到Page3时尝试更改TabBar属性 。

    该文档指定了一个负责TabBar可见性的属性:https ://docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/shell/tabs#tabbar-and-tab-visibility

    甚至还有一种特殊的方法可以打开和关闭TabBar显示:https ://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.shell.tabbarisvisibleproperty?view=xamarin-forms

    试试这个解决方案。

    • 1
  3. Николай Смирнов
    2022-09-13T17:08:52Z2022-09-13T17:08:52Z

    我还找到了这个解决方案:App.Current.MainPage.Navigation.PushAsync(new Page3())

    这将全屏显示页面。也就是说,尽管使用了 Shell,Navigation 仍然可以在其中正常运行。

    • 0

相关问题

  • xamarin 在桥接模式下形成 android 模拟器网络设置

  • 启动安卓模拟器时出错

  • 无限部署到 Xamarin.Android 设备

  • xamarin 上的应用程序的尺寸是多少?

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    表格填充不起作用

    • 2 个回答
  • Marko Smith

    提示 50/50,有两个,其中一个是正确的

    • 1 个回答
  • Marko Smith

    在 PyQt5 中停止进程

    • 1 个回答
  • Marko Smith

    我的脚本不工作

    • 1 个回答
  • Marko Smith

    在文本文件中写入和读取列表

    • 2 个回答
  • Marko Smith

    如何像屏幕截图中那样并排排列这些块?

    • 1 个回答
  • Marko Smith

    确定文本文件中每一行的字符数

    • 2 个回答
  • Marko Smith

    将接口对象传递给 JAVA 构造函数

    • 1 个回答
  • Marko Smith

    正确更新数据库中的数据

    • 1 个回答
  • Marko Smith

    Python解析不是css

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5