[英]How create .Net Maui ContentPage using c# instead of xaml?
tl;博士
.NET MAUI ContentPage (C#)
或.NET MAUI ContentView (C#)
。SomeUIElement
API xamarin forms SomeUIElement class
。 Maui“API”文檔還沒有(目前只有一個頁面對每個類進行“高級”解釋),因此可以通過搜索相應的 Xamarin Forms 類找到更多信息。
Google xamarin forms contentpage class
以查找:
在那里,我們看到了 c# 示例:
using System;
using Xamarin.Forms;
namespace ContentPageExample
{
public class App : Application
{
public static Page GetMainPage ()
{
return new ContentPage {
Content = new Label {
Text = "Hello, Forms!",
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand,
},
};
}
public App ()
{
MainPage = GetMainPage();
}
}
}
毛伊島的App
詳細信息可能略有不同; 我們關心的這段代碼的一部分是:
return new ContentPage {
Content = new Label {
Text = "Hello, Forms!",
VerticalOptions = LayoutOptions.CenterAndExpand,
HorizontalOptions = LayoutOptions.CenterAndExpand,
},
};
這在毛伊島按原樣工作。 (編譯器警告LayoutOptions.CenterAndExpand
已被棄用;但討論這超出了此答案的范圍。)
可重復使用的視圖
如果要在 xaml 或代碼中的其他位置引用 UI 元素,請定義現有 UI 元素的子類。
感謝 Paramjit 指出第一步是將適當的項目添加到項目中。 對於ContentPage
,即:
右鍵單擊項目-> 添加-> 新項目-> .NET MAUI->
.NET MAUI ContentPage (C#)
對於ContentView
(如下),該步驟是:
右鍵單擊項目-> 添加-> 新項目-> .NET MAUI->
.NET MAUI ContentView (C#)
源文件 MyContentView.cs:
namespace MyViews
{
public class MyContentView : ContentView
{
public MyContentView {
//NO "InitializeComponent()" because doing it all in c#.
Content = new Label {
Text = "Hello, Maui!"
}
}
}
}
XAML 中的用法:
<SomeClass ...
xmlns:myviews="clr-namespace:MyViews"
...>
...
<myviews:MyContentView ... />
</SomeClass>
在 c# 中作為 c# 標記的一部分的用法:
using MyViews;
...
var page = new ContentPage {
Content = new MyContentView()
}
先進的
子類ContentView
是在 Maui 中制作“自定義控件”的一種方法。
要定義自定義屬性,請閱讀“自定義視圖”和“BindableProperties”。 (我目前沒有具體的鏈接可以推薦。請隨意添加此類鏈接作為評論。)
更高級的方法是創建自定義處理程序。
請參閱創建 .NET MAUI 地圖控件。
更多信息
在 c# 中定義 UI 元素稱為“c# 標記”。
和Xamarin 社區工具包 C# 標記。 注意:這里提到的 Nuget不再需要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.