如何使用 c# 而不是 xaml 创建 .Net Maui ContentPage?
How create .Net Maui ContentPage using c# instead of xaml?
.Net Maui ContentPage 文档给出了一个 XAML 示例。但是没有c#例子。
如何仅使用 c# 创建 ContentPage?
tl;dr
- 概念是“c# 标记”。
- 入门:右键单击项目-> 添加-> 新项-> .NET MAUI->
.NET MAUI ContentPage (C#)
或 .NET MAUI ContentView (C#)
.
- 如果 Maui 文档(还)没有您需要的信息,google
xamarin forms SomeUIElement class
SomeUIElement
API。
Maui“API”文档还没有(目前只有一个页面给出每个class的“higher-level”解释),所以可以找到更多信息通过搜索 对应的 Xamarin Forms class.
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,
},
};
这在毛伊岛有效 as-is。 (编译器警告 LayoutOptions.CenterAndExpand
已弃用;但讨论这超出了本答案的范围。)
可重用视图
如果您想从 xaml 或代码中的其他地方引用 UI 元素,请定义现有 UI 元素的子 class。
感谢 Paramjit 指出第一步是将适当的项目添加到项目中。对于ContentPage
,即:
Right click on project-> Add -> New Item -> .NET MAUI-> .NET MAUI ContentPage (C#)
对于ContentView
(如下),那一步是:
Right click on project-> Add -> New Item -> .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()
}
高级
Subclassing ContentView
是在毛伊岛制作“自定义控件”的一种方法。
要定义自定义属性,请阅读“自定义视图”和“BindableProperties”。 (暂时没有具体链接可以推荐,如有链接欢迎评论补充。)
更高级的方法是创建自定义处理程序。
参见 Creating a .NET MAUI Maps Control。
更多信息
在 c# 中定义 UI 个元素称为“c# 标记”。
参见 Introducing C# Markup for Xamarin.Forms。
和Xamarin Community Toolkit C# Markup。注意: 中提到的 Nuget 不再需要。
.Net Maui ContentPage 文档给出了一个 XAML 示例。但是没有c#例子。
如何仅使用 c# 创建 ContentPage?
tl;dr
- 概念是“c# 标记”。
- 入门:右键单击项目-> 添加-> 新项-> .NET MAUI->
.NET MAUI ContentPage (C#)
或.NET MAUI ContentView (C#)
. - 如果 Maui 文档(还)没有您需要的信息,google
xamarin forms SomeUIElement class
SomeUIElement
API。
Maui“API”文档还没有(目前只有一个页面给出每个class的“higher-level”解释),所以可以找到更多信息通过搜索 对应的 Xamarin Forms class.
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,
},
};
这在毛伊岛有效 as-is。 (编译器警告 LayoutOptions.CenterAndExpand
已弃用;但讨论这超出了本答案的范围。)
可重用视图
如果您想从 xaml 或代码中的其他地方引用 UI 元素,请定义现有 UI 元素的子 class。
感谢 Paramjit 指出第一步是将适当的项目添加到项目中。对于ContentPage
,即:
Right click on project-> Add -> New Item -> .NET MAUI->
.NET MAUI ContentPage (C#)
对于ContentView
(如下),那一步是:
Right click on project-> Add -> New Item -> .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()
}
高级
Subclassing ContentView
是在毛伊岛制作“自定义控件”的一种方法。
要定义自定义属性,请阅读“自定义视图”和“BindableProperties”。 (暂时没有具体链接可以推荐,如有链接欢迎评论补充。)
更高级的方法是创建自定义处理程序。
参见 Creating a .NET MAUI Maps Control。
更多信息
在 c# 中定义 UI 个元素称为“c# 标记”。
参见 Introducing C# Markup for Xamarin.Forms。
和Xamarin Community Toolkit C# Markup。注意: 中提到的 Nuget 不再需要。