.NET MAUI MARKUP社区工具包是流利的C#扩展方法的集合,它允许开发人员继续使用MVVM,绑定,资源词典等继续架构其应用程序,而无需XAML
所有功能均由您,我们惊人的.NET社区贡献,并由一组核心维护者维护。
而且 - 最好的部分 - 您添加到.NET MAUI工具包中的功能可能有一天包含在官方.NET MAUI库中!我们利用社区工具包首次亮相新功能,并与.NET MAUI工程团队紧密合作,以提名促销功能。
为了使用.NET MAUI社区工具包,您需要在MauiProgram.cs
文件中调用扩展方法,如下所示:
using CommunityToolkit . Maui . Markup ;
public static MauiApp CreateMauiApp ( )
{
var builder = MauiApp . CreateBuilder ( ) ;
// Initialise the toolkit
builder . UseMauiApp < App > ( ) . UseMauiCommunityToolkitMarkup ( ) ;
// the rest of your logic...
}
可以在Microsoft Learn上找到CommunityToolkit.Maui.Markup
的所有文档:
https://learn.microsoft.com/dotnet/communitytoolkit/maui/markup/markup
以下是一些简短的示例,显示如何通过使用标记软件包来实现共同的任务。
C#标记使我们能够流利地定义绑定,因此将多种方法链在一起以减少代码的详细性:
new Entry ( )
. Bind ( Entry . TextProperty , static ( ViewModel vm ) => vm . RegistrationCode ) ;
有关Bind
方法可能选项的更多详细信息,请参阅BindableObject
扩展文档。
标记使我们能够流利地定义尺寸,因此将多种方法链在一起以减少代码的详细性:
new Entry ( ) . Size ( 200 , 40 ) ;
有关Size
方法可能选项的更多详细信息,请参阅VisualElement
扩展”文档。
此示例具有带子Label
和Entry
对象的Grid
对象。该Label
显示文本,并且Entry
数据与ViewModel的RegistrationCode
属性结合。每个子视图都设置为在Grid
中的特定行中出现,并且Entry
跨越Grid
中的所有列。另外,将Entry
的高度及其键盘,颜色,文本的字体大小以及Margin
设置。
C#标记扩展程序还允许开发人员使用enum
定义列和行(例如Column.Input
)的名称。
C#标记使其可以使用其流利的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 ,
BackgroundColor = Colors . AliceBlue ,
} . Row ( Row . TextEntry ) . Column ( Column . Input )
. FontSize ( 15 )
. Placeholder ( " Enter number " )
. TextColor ( Colors . Black )
. Height ( 44 )
. Margin ( 5 , 5 )
. Bind ( Entry . TextProperty , static ( ViewModel vm ) vm => vm . RegistrationCode )
}
} ;
}
enum Row { TextEntry }
enum Column { Description , Input }
}
新功能将遵循此工作流程,在下面的步骤中更详细地描述
与新的毛伊工具包有关的辩论以本仓库的讨论形式进行。
如果您想建议一个功能,请讨论当前的设计笔记或建议等,请打开一个新的讨论主题。
简短的讨论更有可能被阅读。如果您留下第五十个评论,那么只有少数人会读它。为了使讨论更容易导航和受益,请观察一些经验法则:
一旦您有一个充实的建议,描述了句法和语义细节中的新功能,请为其打开一个问题,并将其标记为提案。有关该问题的评论线程可用于散布或简要讨论该提案的详细信息,以及将其采用到.NET MAUI工具包中的优点和缺点。如果问题不符合一个完整的建议,我们可以将其转移到讨论中,以便可以进一步成熟。特定的开放问题或提案的更广泛讨论通常需要开幕式讨论,而不是对问题的评论部分混乱。
当.NET MAUI Toolkit Core团队的成员发现提案值得晋升为工具包时,他们可以倡导它,这意味着他们将将其带入每月的.NET .NET MAUI TOOLKIT社区站立。
.NET MAUI工具包核心团队将集体投票通过采用和/或修改该提案,需要将多数批准(即大于50%)添加到工具包中。
一旦提出了一项提案,并获得了.NET MAUI Toolkit Core团队的多数批准,就可以打开拉动请求。
提交拉动请求后,提案冠军将审查和批准。
每个新功能还需要将相关的样本添加到.NET MAUI工具包应用程序中。
在将拉请请求合并到.NET MAUI工具包中之前,拉请请求作者还必须将文档提交给我们的文档存储库。
一旦审查了拉的请求 +批准并已编写,提交和批准该文档,将合并新功能,将其添加到.NET MAUI工具包中
作为.NET基金会的一部分,我们采用了.NET基金会行为准则。在参与此存储库之前,请熟悉这一点。谢谢!
该项目得到了.NET基金会的支持。