Com o ReSharper, você recebe assistência adicional ao editar arquivos XAML sempre que trabalha com aplicativos para UWP (Plataforma Universal do Windows), WPF, Silverlight ou Windows Phone. Isso inclui análise dinâmica da qualidade do código, refatorações, geração e reorganização do código, bem como navegação rápida por toda a solução.
Os recursos de análise da qualidade do código do ReSharper ajudam você a localizar e corrigir erros rapidamente nos seus arquivos XAML. Vejamos como ele funciona usando alguns exemplos.
Digamos que você esteja trabalhando em um projeto WPF no qual somente o XAML 2006 é permitido. Se o ReSharper encontrar um objeto genérico do XAML 2009, ele realçará esse objeto como um erro de linguagem. Se você pressionar Alt+Enter no realce, o ReSharper exibirá uma correção rápida sugerindo declarar um tipo herdado de System.Collections.Generic.List<string>
em vez disso.
Quando você aplicar a correção rápida, o ReSharper:
List
. TypeArguments
, altera o tipo do objeto para o novo tipo de wrapper e insere uma nova diretiva de namespace, se necessário. Se você estiver usando um recurso que ainda não foi declarado, o realce de erros do ReSharper não o deixará esquecer isso.
Quando você pressionar Alt+Enter, o ReSharper sugerirá vários locais possíveis para criar o recurso ausente.
Se o tipo do recurso gerado ainda não estiver declarado, não há problema: o ReSharper oferecerá a opção de criar um tipo CLR ou XAML (ou seja, um UserControl
) a partir do uso. Escolher uma das duas opções cria um arquivo com a implementação padrão.
Colocar um comentário em um elemento acidentalmente fará com que o ReSharper o realce e ofereça opções para resolver o erro.
No caso em que um TargetType
está definido em um configurador de estilos, o ReSharper detecta redundâncias em qualificadores de tipo e oferece uma correção.
Você pode usar o preenchimento de código do ReSharper em tags XAML. O suporte para CamelHumps ajuda você a adicionar atributos rapidamente: basta inserir alguns símbolos e pressionar Ctrl + Espaço para mostrar a lista de sugestões relevantes fornecida pelo recurso Symbol Completion do ReSharper.
Se você chamar Smart Completion pressionando Ctrl+Alt+Space, o ReSharper oferecerá opções adicionais sensíveis ao contexto, dependendo do ponto em que você se encontra no código. Por exemplo, invocar o preenchimento inteligente em uma declaração de manipulador de eventos resulta em uma sugestão para gerar o método do manipulador.
Usando o preenchimento inteligente dentro de um atributo, você pode criar rapidamente um novo recurso (estático ou dinâmico), uma associação ou uma referência a um elemento estático.
Outra vantagem interessante do preenchimento de código do ReSharper é que ele exibe cores para pincéis que são esperados em atributos como Background
ou OpacityMask
.
O ReSharper também oferece suporte para o Preenchimento de símbolos de importação em XAML. Isso significa que você pode preencher tipos de assemblies que são referenciados na sua solução, mas que não têm diretivas de importação de namespace correspondente no arquivo atual.
É claro que, depois que você usar o preenchimento de código do ReSharper dessa maneira, a diretiva de importação de namespace necessária será inserida automaticamente.
Como alternativa, se você tiver um tipo em um arquivo XAML que não for importado por qualquer motivo, o ReSharper oferecerá a opção de criar rapidamente a diretiva de namespace.
O menu Navigate To do ReSharper funciona em elementos de código XAML da mesma maneira que em arquivos de código C#. Pressionar Alt+` em um uso ou declaração de símbolo abre um menu com vários destinos de navegação possíveis.
A navegação por meio do comando Go To File Member funciona em um arquivo XAML da mesma maneira que em um arquivo C#, auxiliando na navegação até um elemento com um determinado tipo, nome ou chave. Mais uma vez, você não precisa digitar o nome inteiro — o suporte para CamelHumps em minúsculas permite que você localize WatchList
digitando simplesmente wl
.
Ao pressionar Ctrl+Alt+F7 em um arquivo XAML, você recebe uma lista de todos os arquivos relacionados: por exemplo, o arquivo code-behind, quaisquer recursos referenciados no arquivo XAML atual ou imagens usadas nos seus controles.
O comando Go to Declaration (F12) e a navegação com Ctrl+clique também funcionam da mesma maneira em um arquivo XAML como em um arquivo de código C# comum. Por exemplo, ao manter a tecla Ctrl pressionada, você pode focalizar o mouse sobre o nome de uma classe específica. O ReSharper sublinhará o nome da classe e, ao clicar no link, você será direcionado diretamente à definição dessa classe.
Além disso, assim como em arquivos de código, a janela File Structure exibe a estrutura do arquivo XAML, permitindo que você navegue rapidamente até o elemento de código que está procurando.
Você pode procurar usos de um determinado elemento XAML pressionando Shift+F12, o que invocará o comando Find Usages. O ReSharper exibirá todos os locais em que o elemento está sendo usado.
Você também pode pressionar Shift+Alt+F11, o que , proporcionando uma rápida visão geral dos locais em que um símbolo específico está sendo usado no arquivo atual.
Criar propriedades de dependências pode ser uma tarefa ridiculamente chata. Esse é outro problema que o ReSharper pode corrigir: seu mecanismo de modelo de código é poderoso o suficiente para permitir que você crie fragmentos refinados que são implantados em propriedades de dependências com apenas algumas teclas pressionadas. Basta digitar o nome de um modelo dinâmico no editor para obter o par de uma propriedade e a propriedade de dependência correspondente implantada, com preenchimento de código inteligente disponível em todos os espaços reservados que você precisa preencher.
Da mesma forma, você pode fazer o ReSharper implantar propriedades anexadas, que são ainda mais complicadas que as propriedades de dependências comuns. Após a implantação do modelo dinâmico, você pode percorrer todas as suas inúmeras variáveis e usar o preenchimento de código do ReSharper onde isso for aplicável.
Embora modelos dinâmicos para propriedades de dependências e propriedades anexadas não estejam atualmente incluídos no ReSharper para uso imediato, você pode baixá-los e importá-los.
O ReSharper oferece suporte para várias ações de contexto, que simplificam o trabalho com a sintaxe XML e podem ser usados na linguagem XAML. Para mencionar apenas algumas das vantagens, você pode substituir um nome de tag por um nome diferente, converter um atributo em um elemento aninhado ou remover uma tag e promover seus filhos um nível acima.
Há também mais de uma dúzia de ações de contexto específicas para XAML, que permitem adicionar ou remover definições de colunas ou linhas, criar exibições e recursos, alternar entre diferentes tipos de referências de recursos, extrair configuradores de propriedades para estilos e muito mais.
Como os elementos XAML são, essencialmente, equivalentes aos membros de classes comuns, algumas das refatorações que funcionam em C# também funcionam em XAML. Por exemplo, você pode renomear ou excluir um recurso com segurança simplesmente abrindo o menu Refactor This.
Quando você navega por uma referência a uma propriedade ou método em XAML, o intervalo de refatorações apresentadas no menu Refactor This corresponde ao que você esperaria obter se abrisse esse menu em um código C# ou VB.NET.
Além das refatorações C# e VB.NET, existem algumas refatorações específicas para XAML:
É uma situação comum no XAML definir estilos embutidos para vários controles e depois realocá-los para uma definição de estilo. O ReSharper facilita muito essa operação com a refatoração Extract Style.
A caixa de diálogo exibida para essa refatoração ajuda a decidir em qual recurso extrair as propriedades (você pode escolher um recurso existente ou criar um novo), além de quais propriedades você deseja extrair.
As refatorações Extract Resource e Inline Resource permitem mover praticamente qualquer atribuição de propriedade (incluindo aquelas em extensões de marcação) para um recurso, e vice-versa — remova uma definição de um recurso e insira-a diretamente no elemento.
Usando os recursos de reordenação de código do ReSharper, você pode mover elementos dentro de um arquivo XAML ou até mesmo atributos dentro desses elementos. Ambas as operações são realizadas pressionando as teclas Ctrl+Alt+Shift e as teclas de seta.
Ao trabalhar com atributos, essas combinações de teclas permitem mover os atributos em torno da tag, de forma que as teclas de seta para a esquerda e para a direita alterem a posição do atributo. Porém, se você pressionar as teclas para cima e para baixo, suas ações afetarão a tag inteira.
As teclas para cima e para baixo movem a tag inteira em relação a outras tags. Se você estender uma seleção usando Ctrl+Alt+direita para abranger a tag e todo o conteúdo dela, também poderá usar as teclas para a esquerda e para a direita na mesma medida, com a única diferença de que essas combinações também "rebaixarão" sua seleção atual, colocando-a dentro de qualquer tag com a qual você se deparar.
Todos os atalhos de teclado fornecidos nesta página estão disponíveis no mapa de teclas "Visual Studio" padrão do ReSharper. Para obter detalhes sobre os dois mapas de teclas do ReSharper, consulte a Documentação do ReSharper.