Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Use ComponentResourceKey instead of strings to identify resources

Aberta
#3,918 1 comentário 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
csharp
Domínio
desktop

Direção de pesquisa

Comece localizando as declarações dos dicionários de recursos e os usos de XAML que atualmente identificam recursos com strings. Revise o padrão estático ComponentResourceKey proposto e determine o escopo da migração. O trabalho estará concluído quando os recursos usarem chaves verificadas pelo compilador e a decisão sobre compatibilidade retroativa ou versionamento estiver documentada e validada.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

enhancement evaluation required

Is your feature request related to a problem? Please describe.

  • Currently resources are identified using strings. The string can only be validated at runtime and not while writing the XAML code
  • When a resource key changes in a new version, the compiler does not indicate a problem and we get an Exception at runtime

Describe the solution you'd like

  • Using ComponentResourceKey would make resources type-save
  • Optional: preserve the existing string-based resource keys for backward-compatibility, or increase the version number because of breaking changes

Describe alternatives you've considered

  • Don't know a better way

Additional context
To create the resource key, you need to create a Component resource key in a static class:

public static partial class MaterialDesignColors
{
    public static ComponentResourceKey Primary50Color { get; } = new(typeof(MaterialDesignColors), nameof(Primary50Color));
    // ...
}

When declaring the resource in the ResouceDictionary, use the ComponentResourceKey as Key:

<Color Key="{x:Static md:MaterialDesignColors.Primary50Color}" ... />

When using the resource, we can now use a static reference that is checked by the compiler:

<Brush Color="{DynamicResource {x:Static md:MaterialDesignColors.Primary50Color}}" ... />
Linguagem predominante
C#
Estrelas
16.3k
Forks
3.5k
Merge médio
1d 15h
PRs com merge (30d)
10

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de MaterialDesignInXAML/MaterialDesignInXamlToolkit

Todas as issues de MaterialDesignInXAML/MaterialDesignInXamlToolkit

Issues semelhantes

Mais issues de C#

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.