簡體   English   中英

如何使用 c# 而不是 xaml 創建 .Net Maui ContentPage?

[英]How create .Net Maui ContentPage using c# instead of xaml?

.Net Maui ContentPage文檔提供了一個 XAML 示例。 但沒有 c# 示例。

如何僅使用 c# 創建 ContentPage?

tl;博士

  • 這個概念是“c#標記”。
  • 入門:右鍵單擊項目-> 添加 -> 新項目 -> .NET MAUI-> .NET MAUI ContentPage (C#).NET MAUI ContentView (C#)
  • 如果 Maui 文檔(還)沒有您需要的信息,谷歌 xamarin 為SomeUIElement API xamarin forms SomeUIElement class

Maui“API”文檔還沒有(目前只有一個頁面對每個類進行“高級”解釋),因此可以通過搜索相應的 Xamarin Forms 類找到更多信息。
Google xamarin forms contentpage class以查找:

Xamarin.Forms/ContentPage 類

在那里,我們看到了 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.Forms 介紹 C# 標記

Xamarin 社區工具包 C# 標記 注意:這里提到的 Nuget不再需要

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM