Xamarin.forms PopUp to包含其他控件,如DateTime选择器、dropdownlist

Xamarin.forms PopUp to包含其他控件,如DateTime选择器、dropdownlist,xamarin.forms,Xamarin.forms,我是新手。我记得在Win10中,有一个弹出式UI,它可以包含许多控件,如下拉框、DatePciker和其他控件。此弹出窗口可以用Xaml构建。 我正在为平板电脑开发一个应用程序。 可以在包含下拉列表、日期选择器、时间选择器的Xamarin表单中使用此类弹出窗口?做这样复杂的UI是明智的吗?它会导致Android和iOS出现问题吗 问题:如何在Xaml中创建弹出窗口 so ,I can use a button to open or close it. var button = new Butt

我是新手。我记得在Win10中,有一个弹出式UI,它可以包含许多控件,如下拉框、DatePciker和其他控件。此弹出窗口可以用Xaml构建。

我正在为平板电脑开发一个应用程序。 可以在包含下拉列表、日期选择器、时间选择器的Xamarin表单中使用此类弹出窗口?做这样复杂的UI是明智的吗?它会导致Android和iOS出现问题吗

问题:如何在Xaml中创建弹出窗口

so ,I can use a button to open or close it.

var button = new Button {Text = "Show Popup"};
button.Clicked += (s, e) => popup.Show();
更新

<?xml version="1.0" encoding="utf-8" ?>

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyApp.View.PopUpDemo"
             Title="PopUp Demo"
             Icon="itemIcon3">

<Grid>
    <Grid>

        <!--Your Page xaml-->

         <Button x:Name="btnPopUp"  Click="ShowPopUp"/>

    </Grid>

    <Grid HorizontalOptions="Fill" BackgroundColor="##60000000" IsVisible="{Binding GridVisibility}">
        <Grid VerticalOptions="CenterAndExpand">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width=".5*"/>
                <ColumnDefinition Width="9*"/>
                <ColumnDefinition Width=".5*"/>
            </Grid.ColumnDefinitions>
            <Frame Grid.Column="1" Padding="0"  HasShadow="True" OutlineColor="#e6e6e6">
                <Grid BackgroundColor="White" RowSpacing="0" ColumnSpacing="0">
                 <!--content for popup-->
                </Grid>
            </Frame>
        </Grid>

    </Grid>
</Grid>

</ContentPage>

我想知道:

我使用的是普通的内容页面

1) 在其中,我放置您的标记,然后删除。这是正确的吗?

2) 框架是否将成为弹出窗口
3) 在btnPopUp中使用什么代码来显示弹出窗口


谢谢

是的,您可以在没有任何性能问题的情况下实现它。您可以使用覆盖显示弹出窗口,如下所示

    <Grid>
    <Grid>
        <!--Your Page xaml-->
    </Grid>
    <Grid HorizontalOptions="Fill" BackgroundColor="##60000000" IsVisible="{Binding GridVisibility}">
        <Grid VerticalOptions="CenterAndExpand">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width=".5*"/>
                <ColumnDefinition Width="9*"/>
                <ColumnDefinition Width=".5*"/>
            </Grid.ColumnDefinitions>
            <Frame Grid.Column="1" Padding="0"  HasShadow="True" OutlineColor="#e6e6e6">
                <Grid BackgroundColor="White" RowSpacing="0" ColumnSpacing="0">
                 <!--content for popup-->
                </Grid>
            </Frame>
        </Grid>

    </Grid>
</Grid>

这个很简单。这里我添加了网格来实现这一点。您还可以使用其他布局。但根据xamarin团队的说法,网格的性能更好

对于第二个网格,我添加了可见性属性,以便您可以连接任何事件。 在这里,我为弹出窗口添加了背景色###60000000,这样当弹出窗口出现时,背景将是透明的,具有浅黑色效果

如果您需要在多个屏幕上显示相同的弹出窗口,您可以使用第三方插件,这将使您的工作更轻松。为此,您必须创建一个新的contentpage,将contentpage替换为

<pages:PopupPage xmlns="http://xamarin.com/schemas/2014/forms"
         xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
         xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup"
         xmlns:animations="clr-namespace:Rg.Plugins.Popup.Animations;assembly=Rg.Plugins.Popup"
         x:Class=""
         BackgroundColor="##60000000"
         InputTransparent="True"
         HasSystemPadding="True"
         CloseWhenBackgroundIsClicked="False">
<pages:PopupPage.Animation>
    <animations:MoveAnimation
              PositionIn="Bottom"
              PositionOut="Bottom"/>
</pages:PopupPage.Animation>
<Grid>
    <!--your xaml code-->
</Grid>

注意:将youpage.xaml.cs中的contentPage替换为PoupPage。要获得弹出效果,您的布局应该像我显示的第一个示例一样。在这里你也可以得到很好的动画效果。您可以在他们的网站上看到更多详细信息

现在可以通过调用来调用弹出窗口:
navigation.PushPopupAsync(newyourContentPage())

并通过调用wait PopupNavigation.RemovePageAsync(this)删除弹出窗口


希望这对您有用

请查看我的更新。如果您能首先指导我使用您的方法,我将不胜感激。当用户点击按钮时,我想在同一页上显示弹出窗口。两种方法都会在同一页上显示弹出窗口。在使用第二种方法时,您只需要为弹出窗口编写一次XAML,并且您可以从任何页面调用它,它将显示为弹出窗口。你可以尝试任何方法。如果你被卡住了,请告诉我。我被困在如何调用我的更新和我的问题上面弹出窗口。你能给我指一下台阶吗?ThanksI已经为第一种方法()创建了一个演示。关于使用库的第二种方法,您可以参考。希望这对你有帮助。谢谢