Набор инструментов сообщества Maui Markup - это набор методов расширения Fluent C#, который позволяет разработчикам продолжать архивировать свои приложения с использованием MVVM, привязки, ресурсных словарей и т. Д., Без необходимости в XAML
Все функции вносят свой вклад, нашим удивительным сообществом .NET и поддерживаются основным набором сопровождающих.
И - самая лучшая часть - функции, которые вы добавляете в инструментарий .NET Maui, могут однажды включить в официальную библиотеку .NET Maui! Мы используем общинный набор инструментов для дебюта новых функций и тесно сотрудничать с командой инженерной команды .NET Maui для назначения функций для продвижения по службе.
Чтобы использовать инструментарий Community Community .NET, вам нужно вызвать метод расширения в вашем файле 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...
}
Вся документация для CommunityToolkit.Maui.Markup
можно найти здесь, на Microsoft Learn:
https://learn.microsoft.com/dotnet/communitytoolkit/maui/markup/markup
Вот несколько кратких примеров, показывающих, как можно выполнить распространенные задачи за счет использования пакета разметки.
C# Markup позволяет нам свободно определять связывание и, следовательно, цепь множественных методов вместе, чтобы уменьшить условному коду:
new Entry ( )
. Bind ( Entry . TextProperty , static ( ViewModel vm ) => vm . RegistrationCode ) ;
Для получения более подробной информации о возможных параметрах метода Bind
см. В документации расширения BindableObject
.
Разметка позволяет нам свободно определять размеры и, следовательно, цепь множественные методы вместе, чтобы уменьшить условному коду:
new Entry ( ) . Size ( 200 , 40 ) ;
Для получения более подробной информации о возможных вариантах метода Size
см. В документации «Расширения VisualElement
.
Этот пример создает объект Grid
с детской Label
и объектами Entry
. Label
отображает текст, а данные Entry
связываются с свойством RegistrationCode
ViewModel. Каждое представление ребенка установлено, чтобы появиться в определенной строке в Grid
, а Entry
охватывает все столбцы в Grid
. Кроме того, установлена высота Entry
, вместе с клавиатурой, цветами, размером шрифта его текста и его Margin
.
C# расширения разметки также позволяют разработчикам определять имена для столбцов и строк (например, Column.Input
) с использованием enum
.
C# Markup позволяет определить это с помощью его бегемого 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 }
}
Новые функции будут следить за этим рабочим процессом, более подробно описанным в шагах ниже
Дебаты, касающиеся новых функций инструментария Maui, происходят в форме обсуждений в этом репо.
Если вы хотите предложить функцию, обсудите текущие заметки о дизайне или предложения и т. Д., Пожалуйста, откройте новую тему для обсуждения.
Дискуссии, которые короткие и остаются на теме, гораздо чаще прочитаются. Если вы оставите комментарий № пятьдесят, скорее всего, только несколько человек прочитают его. Чтобы облегчить дискуссии на ориентации и извлечении пользы, пожалуйста, соблюдайте несколько правил эмпиатра:
После того, как у вас есть полностью прорезиционное предложение, описывающее новую функцию в синтаксических и семантических деталях, пожалуйста, откройте для нее проблему, и оно будет помечено как предложение. Поток комментариев по этому вопросу может быть использована для хэш или краткого обсуждения деталей предложения, а также плюсов и минусов внедрения его в инструментарий .NET Maui. Если проблема не соответствует решению о том, чтобы быть полным предложением, мы можем перенести его в дискуссию, чтобы она была еще более повреждена. Конкретные открытые вопросы или более обширное обсуждение с предложением часто требуют открытия побочного обсуждения, а не загромождать раздел комментариев по этому вопросу.
Когда член основной команды .NET Maui Toolkit Core обнаруживает, что предложение заслуживает продвижения в инструментарии, они могут отстаивать его, что означает, что они приведут его к ежемесячному отделению .NET Maui Toolkit Community.
Основная команда .NET Maui Toolkit Core будет коллективно проголосовать за работу по принятию и/или изменению предложения, что требует, чтобы большинство одобрения (то есть более 50%) было добавлено в инструментарий.
После того, как предложение будет защищено и получило большинство одобрения от основной команды .NET Maui Toolkit, может быть открыт запрос на привлечение.
После того, как запрос на привлечение был подан, он будет рассмотрен и утвержден чемпионом предложения.
Каждая новая функция также требует, чтобы связанный образец был добавлен в приложение .NET MAUI Toolkit.
Перед тем, как запрос на тягу может быть объединен в инструментарий .NET MAUI, автор запроса на привлечение также должен отправить документацию в нашу хранилища документации.
После того, как запрос на привлечение был рассмотрен + утвержден, и документация была написана, представлена и утверждена, новая функция будет объединена, добавив его в инструментарий .NET Maui Toolkit
В рамках Фонда .NET мы приняли Кодекс поведения .NET. Пожалуйста, ознакомьтесь с этим, прежде чем участвовать в этом репозитории. Спасибо!
Этот проект поддерживается Фондом .NET.