【问题标题】:How to open popup only instead of page when tab bar (bottom bar) item tap in xamarin forms?当标签栏(底栏)项目在xamarin表单中点击时,如何仅打开弹出窗口而不是页面?
【发布时间】:2019-08-01 14:20:35
【问题描述】:

每当我们点击标签栏(底栏)的任何项目时,我只想打开弹出窗口而不是整个页面。弹出窗口将在任何先前选择的标签栏项目上打开。例如我们有 5 个标签栏项目。

  • 待定第 1 项(第 1 页)
  • 待定第 2 项(第 2 页)
  • tb item 3(无页面但仅弹出)
  • 待定第 4 项(第 4 页)
  • 待定第 5 项(第 5 页)

如果我在 tb item 1 (Page1) 上并点击 tb item 3,它将在 tb item 1 (Page1) 上打开弹出窗口。

checked this plugin 但不允许这样做。

【问题讨论】:

  • 弹出的内容是什么?例如,它是否具有您引用的插件中的任何形式
  • 您可以使用网格创建自己的标签栏,然后使用这些按钮做任何您喜欢的事情
  • @Viral 您是否使用 Xamarin Forms Shell?如果是,那么当用户单击该特定选项卡并打开弹出窗口时,您可以控制导航!如果您可以从 Navigation 控制 Navigating 事件并取消当前的导航事件并显示弹出窗口,那就是要走的路。希望它可以帮助您研究这个方向。
  • 对于标签栏,我使用了“TabbedPage”docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/… 有什么方法可以单击任何标签项,但限制打开页面或没有任何页面的标签项。这可能吗?
  • 不,您必须使用自定义标签栏。

标签: xamarin xamarin.forms xamarin.android xamarin.ios


【解决方案1】:

TabbedPage 默认情况下应该有子页面。 我假设您想在点击第 3 项时保持在同一页面上。是 tb item 1 tb item 2 tb item 4 ...

取而代之的是,您可以在页面底部创建一个带有 5 个图标的页面。 并包括所有 5 个项目的 OnTapped 手势,项目 3 调用 Pop up ,而其他人导航到相应的页面。

<?xml version="1.0" encoding="utf-8" ?>
<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="App1.Views.PageX">
    <ContentPage.Content>
        <StackLayout>
            <StackLayout VerticalOptions="FillAndExpand">
                <Label Text="Page content" />
            </StackLayout>
            <Grid VerticalOptions="End">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <ImageButton Source="tab_feed.png"
                             Grid.Column="0"
                             Clicked="ImageButton1_Clicked" />
                <ImageButton Source="tab_feed.png"
                             Grid.Column="1"
                             Clicked="ImageButton2_Clicked" />
                <ImageButton Source="tab_feed.png"
                             Grid.Column="2"
                             Clicked="ImageButton3_Clicked" />
                <ImageButton Source="tab_feed.png"
                             Grid.Column="3"
                             Clicked="I mageButton4_Clicked" />
                <ImageButton Source="tab_feed.png"
                             Grid.Column="4"
                             Clicked="ImageButton5_Clicked" />
            </Grid>
        </StackLayout>
    </ContentPage.Content>

和页面导航

private async void ImageButton1_Clicked (object sender, EventArgs e) 
{
    await Navigation.PushAsync (new ItemPage1 ());
}

弹出窗口

private async void ImageButton3_Clicked(object sender, EventArgs e)
{
    await Rg.Plugins.Popup.Contracts.IPopupNavigation.PushAsync(new MyPopupPage(), true);

}

【讨论】:

  • 感谢您的回复。抱歉,我无法使用这种方式,因为应用程序已经开发,我正在将此模块添加到应用程序。对于标签栏,我使用了“TabbedPage”docs.microsoft.com/en-us/xamarin/xamarin-forms/app-fundamentals/…。有什么方法可以单击任何选项卡项,但限制打开页面或没有任何页面的选项卡项。这可能吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-03
  • 1970-01-01
相关资源
最近更新 更多