如何创建一个简单的Xamarin.Forms.MultiPage子类?
在下面的代码中,我有一个多页,它创建三个简单的页面(每个页面上只有标签和按钮),然后将当前页面设置为定义的第一个页面。但是,对设置CurrentPage的调用不会改变屏幕上显示的内容。显示的页面始终是我添加到ItemsSource的最后一个页面。
这是我的密码
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 ;
}
}
}我想我错过了什么,但我找不到任何例子来澄清这一点。
发布于 2016-05-27 08:50:40
我还注意到,设置CurrentPage对MultiPage没有影响(而对TabbedPage则没有影响)。因此,我将IsVisible设置为对我想要看到的孩子为真,对其他孩子设置为false。您甚至可以使用SelectedItem和转换器绑定它。
我发现它比前面的布局更简单。特别是对于windows桌面应用程序,因为您可以调整窗口大小并查看“隐藏”页面。
发布于 2015-12-31 09:50:01
当然,这就是多页面的工作方式。
您所做的只是简单地在布局上堆叠布局,更改哪个是"currentpage“,而它们都已经在屏幕上了,这不会有多大作用。如果你打算这样做,那么你将不得不手动管理他们的布局。
基本上,改变你不希望看到的页面的布局,这样它们就不碍事了。就像这样:
private Rectangle GetPageClosedRectangle()
{
return new Rectangle(Width, 0, Width, Height);
}
private Rectangle GetPageOpenedRectangle()
{
return new Rectangle(0, 0, Width, Height);
}然后,每当您想隐藏/显示页面时,都可以交换页面:
PageIDontWantToSee.LayoutTo(getPageClosedRectangle());
PageIWantToSee.LayoutTo(getPageOpenedRectangle());"LayoutTo“方法是一个异步方法,它将布局动画化到设置的矩形。如果您立即想要它,您可以使用page.Layout(Rectangle)
https://stackoverflow.com/questions/32647294
复制相似问题