C# 标记
概述
C# 标记是一组流畅的帮助程序方法和类,用于简化在代码中生成声明性 .NET Multi-platform App UI (.NET MAUI) 用户界面的过程。 C# 标记提供的 Fluent API 在 CommunityToolkit.Maui.Markup
命名空间中可用。
与 XAML 一样,C# 标记可在 UI(视图)和业务逻辑(视图模型)之间实现完全分离。
C# 标记在 .NET MAUI 支持的所有平台上可用,并支持 .NET 热重载。
NuGet 包
C# 标记包可以包含在项目中,如入门指南所述。
示例
下面是一些简短的示例,展示如何通过使用标记包来完成常见任务。
绑定
C# 标记允许我们流畅地定义绑定,从而将多个方法链接在一起,以降低代码的冗长程度:
new Entry().Bind(Entry.TextProperty, static (ViewModel vm) => vm.RegistrationCode, static (ViewModel vm, string text) => vm.RegistrationCode = text)
有关 Bind
方法的可能选项的更多详细信息,请参阅 BindableObject
扩展文档。
大小调整
C# 标记允许我们流畅地定义大小,从而将多个方法链接在一起,以降低代码的冗长程度:
new Entry().Size(200, 40);
有关 Size
方法的可能选项的更多详细信息,请参阅 VisualElement
扩展文档。
详细示例
此示例会创建一个 Grid
对象,其中包含子对象 Label
和 Entry
对象。 Label
显示文本,而 Entry
数据绑定到 viewmodel 的 RegistrationCode
属性。 每个子视图都被设置为显示在 Grid
中的特定行中,而 Entry
跨越 Grid
中的所有列。 此外,还设置了 Entry
的高度,以及它的键盘、颜色、文本的字体大小及其 Margin
。
C# 标记扩展还允许开发人员使用 enum
定义列和行的名称(例如 Column.Input
)。
C# 标记支持使用其 Fluent API 来定义此功能:
using static CommunityToolkit.Maui.Markup.GridRowsColumns;
class SampleContentPage : ContentPage
{
public SampleContentPage()
{
Content = new Grid
{
RowDefinitions = Rows.Define(
(Row.TextEntry, 36)),
ColumnDefinitions = Columns.Define(
(Column.Description, Star),
(Column.Input, Stars(2))),
Children =
{
new Label()
.Text("Code:")
.Row(Row.TextEntry).Column(Column.Description),
new Entry
{
Keyboard = Keyboard.Numeric,
}.Row(Row.TextEntry).Column(Column.Input)
.BackgroundColor(Colors.AliceBlue)
.FontSize(15)
.Placeholder("Enter number")
.TextColor(Colors.Black)
.Height(44)
.Margin(5, 5)
.Bind(Entry.TextProperty, static (ViewModel vm) => vm.RegistrationCode, static (ViewModel vm, string text) => vm.RegistrationCode = text)
}
};
}
enum Row { TextEntry }
enum Column { Description, Input }
}
转换器
C# 标记包提供在生成应用程序 UI 时以内联方式定义 IValueConverter
和 IMultiValueConverter
实现的功能。
转换器 | 说明 |
---|---|
FuncConverter |
FuncConverter 提供在生成 UI 时以内联方式定义 IValueConverter 实现的功能。 |
FuncMultiConverter |
FuncMultiConverter 提供在生成 UI 时以内联方式定义 IMultiValueConverter 实现的功能。 |
扩展
注意
C# 标记包含用于设置特定视图属性的扩展方法。 它们旨在提高代码可读性,并且可与属性资源库结合使用。 如果属性有可用的扩展方法,建议始终使用扩展方法,也可以在进行衡量后自行选择。
扩展 | 说明 |
---|---|
AbsoluteLayout |
AbsoluteLayout 扩展提供一系列支持在 AbsoluteLayout 中定位 View 的扩展方法。 |
AutomationProperties |
AutomationProperties 扩展提供一系列支持配置辅助功能相关设置的扩展方法。 |
BindableLayout |
BindableLayout 扩展提供一系列支持配置其 EmptyView 、ItemSource 和 ItemTemplate 的扩展方法。 |
BindableObject |
BindableObject 扩展提供一系列支持在 BindableObject 上配置 Binding 的扩展方法。 |
DynamicResourceHandler |
DynamicResourceHandler 扩展提供一系列支持配置 IDynamicResourceHandler 的扩展方法,可用于为应用设置主题。 |
Element |
Element 扩展提供一系列扩展方法,这些方法支持配置 Element 的填充、效果、字体特性、动态资源、文本和文本颜色。 |
FlexLayout |
FlexLayout 扩展提供一系列支持在 FlexLayout 中定位 View 的扩展方法。 |
Grid |
网格扩展提供一系列支持配置网格的扩展方法。 |
Image |
Image 扩展提供一系列支持配置 IImage 控件的扩展方法。 |
ItemsView |
ItemsView 扩展提供一系列支持配置 ItemsView 控件(例如 CarouselView 和 CollectionView )的扩展方法。 |
Label |
Label 扩展提供一系列支持配置 Label 控件的扩展方法。 |
Placeholder |
Placeholder 扩展提供一系列支持配置 IPlaceholder 控件的扩展方法。 |
SemanticProperties |
SemanticProperties 扩展提供一系列支持配置辅助功能相关设置的扩展方法。 |
Style |
Style<T> 提供一系列支持配置 Microsoft.Maui.Controls.Style 的 Fluent 扩展方法。 |
TextAlignment |
TextAlignment 扩展提供一系列扩展方法,这些方法支持在实现 ITextAlignment 的控件上配置 HorizontalTextAlignment 和 VeticalTextAlignment 属性。 |
View |
View 扩展提供一系列扩展方法,这些方法支持对继承自 View 的控件配置对齐方式。 |
VisualElement |
VisualElement 扩展提供一系列扩展方法,这些方法支持对 VisualElement 的大小、样式和行为进行配置。 |
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈