首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Xamarin窗体.子类MultiPage

Xamarin窗体.子类MultiPage
EN

Stack Overflow用户
提问于 2015-09-18 08:26:53
回答 2查看 1.6K关注 0票数 2

如何创建一个简单的Xamarin.Forms.MultiPage子类?

在下面的代码中,我有一个多页,它创建三个简单的页面(每个页面上只有标签和按钮),然后将当前页面设置为定义的第一个页面。但是,对设置CurrentPage的调用不会改变屏幕上显示的内容。显示的页面始终是我添加到ItemsSource的最后一个页面。

这是我的密码

代码语言:javascript
复制
using System;
using Xamarin.Forms;
using System.Diagnostics;
using System.Collections.Generic;

namespace NavigationTrial
{
    public class CustomMultiPage : MultiPage<Page>
    {
        public CustomMultiPage () : base()
        {
            var children = new List<Page>() { 
                new SimpleOnePage(), new SimpleTwoPage(), new SimpleThreePage() } ;

            this.ItemsSource = children;
            this.CurrentPage = this.Children[1];
        }

        override protected Page CreateDefault (object item) {
            return (Page)item ;
        }

    }
}

我想我错过了什么,但我找不到任何例子来澄清这一点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-27 08:50:40

我还注意到,设置CurrentPage对MultiPage没有影响(而对TabbedPage则没有影响)。因此,我将IsVisible设置为对我想要看到的孩子为真,对其他孩子设置为false。您甚至可以使用SelectedItem和转换器绑定它。

我发现它比前面的布局更简单。特别是对于windows桌面应用程序,因为您可以调整窗口大小并查看“隐藏”页面。

票数 1
EN

Stack Overflow用户

发布于 2015-12-31 09:50:01

当然,这就是多页面的工作方式。

您所做的只是简单地在布局上堆叠布局,更改哪个是"currentpage“,而它们都已经在屏幕上了,这不会有多大作用。如果你打算这样做,那么你将不得不手动管理他们的布局。

基本上,改变你不希望看到的页面的布局,这样它们就不碍事了。就像这样:

代码语言:javascript
复制
private Rectangle GetPageClosedRectangle()
{
    return new Rectangle(Width, 0, Width, Height);   
}

private Rectangle GetPageOpenedRectangle()
{
    return new Rectangle(0, 0, Width, Height);
}

然后,每当您想隐藏/显示页面时,都可以交换页面:

代码语言:javascript
复制
PageIDontWantToSee.LayoutTo(getPageClosedRectangle());
PageIWantToSee.LayoutTo(getPageOpenedRectangle());

"LayoutTo“方法是一个异步方法,它将布局动画化到设置的矩形。如果您立即想要它,您可以使用page.Layout(Rectangle)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32647294

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档