Xamarin Forms - Mehrere Ansichten auf einer Seite [geschlossen]

Dec 09 2020

Ich muss also mehrere Ansichten auf einer Seite erreichen , so etwas , aber ich kann anscheinend keinen Weg finden, der dies plattformübergreifend ermöglicht. Ich kann sehen, dass Sie dies unter IOS erreichen können, indem Sie einer Seite mehrere Viewcontroller hinzufügen. Ist dies jedoch in Xamarin-Formen möglich?

Bitte lassen Sie mich wissen, wenn Sie Erfahrung damit haben.

Danke im Voraus!

Antworten

LucasZhang-MSFT Dec 09 2020 at 18:21

Es gibt viele Lösungen, die dies implementieren können. Sie können beispielsweise AbsoluteLayout verwenden , um eine Wischansicht zu erstellen.

in ContentPage

<AbsoluteLayout BackgroundColor="White" AbsoluteLayout.LayoutBounds="0,1,1,1">
        <!--  -->

        <Button Clicked="Button_Clicked" Text="Test"  AbsoluteLayout.LayoutBounds="0.5,0.3,0.2,0.05" AbsoluteLayout.LayoutFlags="All" />

        <StackLayout x:Name="bottomBar" BackgroundColor="Olive" AbsoluteLayout.LayoutBounds="0.5,1.0,1.0,0.04" AbsoluteLayout.LayoutFlags="All">
            

            <!-- put the content of swipe here -->

        </StackLayout>
    </AbsoluteLayout>

Im Code dahinter

    bool isShow;
    const double layoutPropHeightMax = 0.45;
    const double layoutPropHeightMin = 0.06;
   //you could set the height here as you want

    private void Button_Clicked(object sender, EventArgs e)
    {
        if(!isShow)
        {
            //show the keyboard

            Device.BeginInvokeOnMainThread(async () =>
            {

                var height = layoutPropHeightMin;

                while (height < layoutPropHeightMax)
                {
                    await Task.Delay(1);
                    height += 0.04;

                    AbsoluteLayout.SetLayoutBounds(bottomBar, new Rectangle(0.5, 1.0,1.0, height));
                }

            });

        }

        else
        {
            // hide the keyboard
            Device.BeginInvokeOnMainThread(async () =>
            {

                var height = layoutPropHeightMax;

                while (height > layoutPropHeightMin)
                {
                    await Task.Delay(1);
                    height -= 0.04;

                    AbsoluteLayout.SetLayoutBounds(bottomBar, new Rectangle(0.5, 1.0, 1.0, height));
                }

            });

        }


        isShow = !isShow;
    }

Hier ist ein ähnliches Problem , auf das Sie verweisen können.