O kit de ferramentas da comunidade .Net Maui Markup é uma coleção de métodos fluentes de extensão C# que permitem aos desenvolvedores continuar arquitetando seus aplicativos usando MVVM, ligações, dicionários de recursos etc., sem a necessidade de xaml
Todos os recursos são contribuídos por você, nossa incrível comunidade .NET e mantidos por um conjunto principal de mantenedores.
E - a melhor parte - os recursos que você adiciona ao kit de ferramentas .NET Maui pode um dia ser incluído na biblioteca oficial .NET Maui! Aproveitamos os kits de ferramentas da comunidade para estrear novos recursos e trabalhar em estreita colaboração com a equipe de engenharia .NET Maui para nomear recursos para promoção.
Para usar o .NET Maui Community Toolkit, você precisa chamar o método de extensão no seu arquivo MauiProgram.cs
da seguinte forma:
using CommunityToolkit . Maui . Markup ;
public static MauiApp CreateMauiApp ( )
{
var builder = MauiApp . CreateBuilder ( ) ;
// Initialise the toolkit
builder . UseMauiApp < App > ( ) . UseMauiCommunityToolkitMarkup ( ) ;
// the rest of your logic...
}
Toda a documentação para CommunityToolkit.Maui.Markup
pode ser encontrada aqui na Microsoft Learn:
https://learn.microsoft.com/dotnet/communitytoolkit/maui/markup/markup
Aqui estão alguns breves exemplos que mostram como as tarefas comuns podem ser alcançadas através do uso do pacote de marcação.
A marcação C# nos permite definir a ligação fluentemente e, portanto, aciona vários métodos para reduzir a verbosidade do nosso código:
new Entry ( )
. Bind ( Entry . TextProperty , static ( ViewModel vm ) => vm . RegistrationCode ) ;
Para mais detalhes sobre as opções possíveis para o método Bind
, consulte a documentação das extensões BindableObject
.
A marcação nos permite definir o dimensionamento fluentemente e, portanto, aciona vários métodos para reduzir a verbosidade do nosso código:
new Entry ( ) . Size ( 200 , 40 ) ;
Para mais detalhes sobre as opções possíveis para o método Size
, consulte a documentação VisualElement
Extensions.
Este exemplo cria um objeto Grid
, com Label
infantil e objetos Entry
. O Label
exibe texto e os dados Entry
se ligam à propriedade RegistrationCode
do ViewModel. Cada visualização da criança está definida para aparecer em uma linha específica na Grid
, e a Entry
abrange todas as colunas da Grid
. Além disso, a altura da Entry
é definida, juntamente com o teclado, as cores, o tamanho da fonte de seu texto e sua Margin
.
As extensões de marcação C# também permitem que os desenvolvedores definam nomes para colunas e linhas (por exemplo, Column.Input
) usando uma enum
.
A marcação C# permite que isso seja definido usando sua API fluente:
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 }
}
Novos recursos seguirão este fluxo de trabalho, descrito em mais detalhes nas etapas abaixo
O debate referente aos novos recursos do kit de ferramentas Maui ocorre na forma de discussões neste repositório.
Se você deseja sugerir um recurso, discuta as notas ou propostas de design atuais, etc., abra um novo tópico de discussão.
As discussões curtas e permanecem no tópico têm muito mais probabilidade de serem lidas. Se você deixar o número de comentários cinquenta, é provável que apenas algumas pessoas o lerem. Para facilitar a navegação e o benefício das discussões, observe algumas regras práticas:
Depois de ter uma proposta totalmente desenvolvida, descrevendo um novo recurso em detalhes sintáticos e semânticos, abra um problema para ele e será rotulado como uma proposta. O tópico de comentários sobre o problema pode ser usado para sair ou discutir brevemente detalhes da proposta, bem como prós e contras de adotá -la no .NET Maui Toolkit. Se um problema não atender à fasquia de ser uma proposta completa, podemos movê -la para uma discussão, para que possa ser mais amadurecida. Questões abertas específicas ou discussão mais expansiva com uma proposta geralmente justifica a abertura de uma discussão paralelo, em vez de atrapalhar a seção de comentários sobre o problema.
Quando um membro da equipe principal .NET Maui Toolkit Core descobre que uma proposta merece promoção no kit de ferramentas, eles podem defendê -la, o que significa que eles o levarão à stand -up da comunidade .NET Maui Toolkit.
A equipe principal .NET Maui Toolkit Core votará coletivamente para trabalhar na adoção e/ou modificação da proposta, exigindo uma aprovação da maioria (ou seja, maior que 50%) para ser adicionada ao kit de ferramentas.
Depois que uma proposta é defendida e recebeu uma aprovação majoritária do .NET Maui Toolkit Core Team, uma solicitação de tração pode ser aberta.
Após a apresentação de uma solicitação de tração, ela será revisada e aprovada pelo campeão da proposta.
Todo novo recurso também requer que uma amostra associada seja adicionada ao aplicativo de amostra .NET Maui Toolkit.
Antes que uma solicitação de tração possa ser mesclada no .Net Maui Toolkit, o autor da solicitação de tração também deve enviar a documentação ao nosso repositório de documentação.
Depois que uma solicitação de tração for revisada + aprovada e a documentação foi escrita, enviada e aprovada, o novo recurso será mesclado adicionando -o ao .NET Maui Toolkit
Como parte da fundação .NET, adotamos o código de conduta .NET Foundation. Familiarize -se com isso antes de participar com este repositório. Obrigado!
Este projeto é suportado pela fundação .NET.