Xamarin.forms Xamarin形式-子类化多页
如何创建Xamarin.Forms.MultiPage的简单子类 在下面的代码中,我有一个多页面,它创建了三个简单页面(每个页面上只有标签和按钮),然后将当前页面设置为定义的第一个页面。 但是,调用setXamarin.forms Xamarin形式-子类化多页,xamarin.forms,Xamarin.forms,如何创建Xamarin.Forms.MultiPage的简单子类 在下面的代码中,我有一个多页面,它创建了三个简单页面(每个页面上只有标签和按钮),然后将当前页面设置为定义的第一个页面。 但是,调用setCurrentPage不会改变屏幕上显示的内容。显示的页面始终是我添加到ItemsSource的最后一个页面 这是我的密码 using System; using Xamarin.Forms; using System.Diagnostics; using System.Collections.
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 ;
}
}
}
使用系统;
使用Xamarin.Forms;
使用系统诊断;
使用System.Collections.Generic;
命名空间导航试用版
{
公共类CustomMultiPage:MultiPage
{
公共CustomMultiPage():base()
{
var children=新列表(){
新建SimpleOnePage()、新建SimpleTopage()、新建SimpleThreePage()};
this.ItemsSource=子项;
this.CurrentPage=this.Children[1];
}
覆盖受保护的页面CreateDefault(对象项){
返回(第页)项;
}
}
}
我想我遗漏了一些东西,但我找不到任何能为我澄清这一点的例子。当然,这就是多页的工作原理 你所做的只是一个版面一个版面地堆叠,当它们都在屏幕上时,改变哪一个是“当前页面”不会有多大作用。 如果你打算这样做,那么你必须手动管理他们的布局 基本上,改变你不想看到的页面的布局,这样它们就不会碍事了。 大概是这样的:
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(矩形)
我还注意到设置CurrentPage对MultiPage没有效果(而对TabbedPage则没有效果)。
因此,我对我想看到的孩子将IsVisible设置为true,对其他孩子设置为false。您甚至可以使用SelectedItem和转换器绑定它
我发现它比前面关于布局的答案更简单。特别是对于windows桌面应用程序,因为您可以调整窗口大小并查看“隐藏”页面。我知道,我没有意识到页面被保存在屏幕上绘制的堆栈中,因此顶部的页面始终可见。这是一个聪明的主意。我只是没有意识到所有的页面都是在屏幕上绘制的,最后绘制的页面与之前的页面重叠。