我想寫一個Xamarin Page
類,模仿Pivot
控件,該控件在Windows Phone上由TabbedPage
使用,但在Windows桌面上不可用。因此,我想讓它擁有幾個子女Page
s,其中只有一個會在同一時間顯示,同時還有一個控制它自己的控件,允許用戶在孩子之間切換。我將如何去做這件事?如何創建一個可以託管其他頁面的Xamarin頁面?
0
A
回答
0
你正在尋找CarouselView
。它在上使用FlipView
WinRT和UWP平臺。
你可以從Xamarin blog和Xamarinhelp.com找到更多的信息。他們還有預發佈nuget包。
0
我想你必須自己寫。使用CarouselView,將它添加到Grid或AbsoluteLayout或RelativeLayout(我的意思是,將它放在背景上,這樣您就可以在其上添加標題的旋轉木馬,或者您可能不想那樣做,在這種情況下,您只需使用垂直堆棧佈局)。您還需要爲導航添加自定義控件,並同步頁面標題輪播和實際頁面輪播之間的更改。
0
我發現this blog post關於如何在視圖中託管頁面。在此基礎上,我提出了以下觀點類:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
namespace SGB
{
public class PageView : View
{
public PageView()
{
}
public static readonly BindableProperty ContentProperty = BindableProperty.Create<PageView,Page> (s => s.Content, null);
public Page Content {
get
{
return (Page)GetValue (ContentProperty);
}
set
{
SetValue (ContentProperty, value);
LayoutContent();
}
}
protected override void OnSizeAllocated(double width, double height)
{
base.OnSizeAllocated(width, height);
LayoutContent();
}
private void LayoutContent()
{
if (Content != null)
{
Content.Layout(new Rectangle(0, 0, Width, Height));
}
}
}
}
與此渲染器類:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Xamarin.Forms;
using Xamarin.Forms.Platform.WinRT;
using Page = Xamarin.Forms.Page;
using SGB;
[assembly: ExportRenderer(typeof(PageView), typeof(SGB.Windows.PageViewRenderer))]
namespace SGB.Windows
{
public class PageViewRenderer : ViewRenderer<PageView, FrameworkElement>
{
private Page currentPage;
private FrameworkElement FrameworkElement;
public PageViewRenderer()
: base()
{
}
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
base.OnElementPropertyChanged(sender, e);
if ((e.PropertyName == "Content") || (e.PropertyName == "Renderer"))
{
SetPage(((PageView)Element).Content);
}
}
private void SetPage(Page page)
{
if (page == currentPage)
{
return;
}
if (currentPage != null)
{
((IPageController)page).SendDisappearing();
currentPage.Parent = null;
}
currentPage = page;
if (page != null)
{
var renderer = page.GetOrCreateRenderer();
FrameworkElement = renderer.ContainerElement;
SetNativeControl(FrameworkElement);
page.Parent = FindPage();
((IPageController)page).SendAppearing();
}
}
private Page FindPage()
{
for (Element element = Element; element != null; element = element.Parent)
{
if (element is Page)
{
return (Page)element;
}
}
return null;
}
}
}
現在我有,我可以創建一個包含PageView
一個ContentPage
,我有我想要的。
相關問題
- 1. 創建.NET頁面以嵌入其他.NET頁面
- 2. 創建管理員頁面,以便用戶不能訪問其他頁面
- 3. 如何從iframe頁面與其託管頁面進行通信?
- 4. Firebase託管,創建404頁面
- 5. Mediawiki從其他頁面內容構建一個頁面
- 6. 如何將值從一個頁面傳遞給其他頁面?
- 7. 如何從一個功放頁面瀏覽到其他頁面?
- 8. 使用codeigniter創建鏈接到主頁面的其他頁面
- 9. 單個PHP頁面託管
- 10. 託管WebMatrix頁面
- 11. 如何跟蹤引薦頁面以創建其他鏈接?
- 12. 管理員控制器的一個404頁面和其他控制器的其他404頁面如何?
- 13. Facebook應用可以爲其託管頁面的任何帖子創建一個廣告嗎?
- 14. 如何爲每個新頁面創建一個url和頁面
- 15. 如何創建一個像WordPress插件頁面的頁面
- 16. 如何創建兩個頁面,以便一個頁面顯示輸入到另一個頁面的內容?
- 17. 如何在aspx c#頁面中創建另一個頁面類
- 18. 如何在MVC中創建頁面並與其他頁面鏈接
- 19. 讓域名託管在另一個域上託管的頁面
- 20. 創建views.py管理頁面
- 21. 創建接管頁面
- 22. 如何創建一個感謝頁面?
- 23. 頁面內其他頁面的刷新
- 24. 其他頁面的半透明頁面
- 25. 如何在其他多個頁面上添加頁面部分?
- 26. Xamarin - 如何創建一個共享頁面,我可以將其包含到非共享項目中的GridView中?
- 27. 其他頁面上的一個頁面變量值php
- 28. 刪除另一個頁面的css,並保留其他頁面
- 29. 本地託管頁面
- 30. onDeviceReady在託管頁面上
CarouselView託管視圖,而不是頁面。 – Simon