Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Add the `partial` modifier to the generated property of the Relay Command

Aperta
#1,164 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
35/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Ferma
Stack tecnologico
csharp

Direzione di ricerca

Inizia individuando il punto di ingresso della generazione del codice sorgente di Relay Command e confronta la gestione della proprietà generata con il generatore di Observable Property. Verifica che la proprietà del comando generata supporti una dichiarazione parziale corrispondente scritta manualmente e che lo scenario di generazione del codice sorgente XAML/App Model la risolva in fase di compilazione senza reflection.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

feature request :mailbox_with_mail:
Overview

Add the partial modifier to the generated property of the Relay Command.

Now, app models like .NET MAUI have introduced a source generation feature that allows XAML to be translated into C#. However, the issue remains that source generators cannot interact with one another, such that only handwritten code is accessible.

Since the Observable Property is partial, it can be referenced in XAML without any issues. However, the Relay Command property is not partial, which prevents XAML source generation from inferring it. To resolve this, update the generated Relay Command property partial so that its declaration can be added in the handwritten code, while the MVVM toolkit handles the implementation.

API breakdown

Providing the source-generated code for reference. The generated property needs to be partial.

User code:

public partial IRelayCommand IncrementCommand { get; }

Generated:

private global::CommunityToolkit.Mvvm.Input.RelayCommand? incrementCommand;
// The request is make this IncrementCommand property partial
// so that the developer can add a declaration part in the source type.
public global::CommunityToolkit.Mvvm.Input.IRelayCommand IncrementCommand => incrementCommand ??= new global::CommunityToolkit.Mvvm.Input.RelayCommand(new global::System.Action(Increment));
Usage example

The IncrementCommand is now visible to the App Model source generator.

Previously, the evaluation occurred at runtime; now, to support AOT, it is resolved at compile time. To avoid reflection, the C# expression API is used, requiring at least the declaration/definition to be part of the handwritten code.

<Button Command="{Binding IncrementCommand}" />
Breaking change?

I'm not sure

Alternatives

Manually create the command property, losing all the toolkit's benefits.

Additional context

Multiple source generators at work.

Help us help you

No, just wanted to propose this

Lingua principale
C#
Stelle
3.8k
Fork
403
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di CommunityToolkit/dotnet

Tutte le issue di CommunityToolkit/dotnet

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.