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

工具制造者史蒂夫

.Net Maui ContentPage文档提供了一个 XAML 示例但没有 c# 示例。

如何仅使用 c# 创建 ContentPage?

工具制造者史蒂夫

博士

  • 这个概念是“c#标记”。
  • 入门:右键单击项目-> 添加 -> 新项目 -> .NET MAUI->.NET MAUI ContentPage (C#).NET MAUI ContentView (C#).
  • 如果 Maui 文档(还)没有您需要的信息,请在谷歌xamarin forms SomeUIElement class上搜索SomeUIElementAPI。

Maui“API”文档还没有(目前只有一个页面给出了每个类的“高级”解释),因此可以通过搜索相应的 Xamarin Forms 类找到更多信息。
谷歌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不再需要

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用Native App C#XAML在Azure AD上创建新用户?

如何在Xamarin形式的XAML中动态更改ContentPage标题?

如何使用包含ASP.NET C#的CRUD创建Jquery FileUpload(不是MVC)

Xamarin继承Xaml中的ContentPage

如何使用C#而不是XAML在WPF中为文本框制作工具提示

如何使用xaml绑定创建If Else条件

序列不包含任何元素XAML ContentPage

在C#中创建框架而不是XAML时,如何在构造函数中分配动态资源?

c#如何使用EPPlus创建Excel范围而不是表格

在Windows Phone中使用C#而不是XAML的ContentTemplate

日志文件不是使用log4net创建的

如何创建在JavaScript中使用的C#.Net DLL

使用xaml或C#创建灯光动画

如何使用 C# 而不是 XAML 向标签添加触发器?

如何从 Xamarin Forms 的 ContentPage 保存 App.xaml 中的资源?

如何为 XAML 网格代码创建 C# 代码?

如何使用 C# 后端而不是在 XAML 中绑定模板上的 XAML 元素?

如何在 C# 中命名 ContentPage?

如何使用 C# 而不是 XAML 将两个 ResourceDictionary 对象合并到 Application.Current.Resources 中?

如何在 C# ContentPage 中访问 App.xaml 上的静态资源模板?

使用 AppShell ContentPage 的页脚不是白色的,为什么?

.net maui preview 10 不是單個項目

如何在 Android 上使用来自 .NET MAUI 的 BroadcastReceiver?

.NET MAUI 标签绑定未在 C# 中更新 - 不是 MVVM

如何在 .NET MAUI/Blazor 混合上的 TabBar 上导航?

如何在 .NET MAUI 中隐藏 ImageButton

如何在 .NET MAUI ViewModel 中显示警报

如何播放音频文件 - .NET MAUI

Maui Blazor 还是 XAML?