XAML 편집 도구

ReSharper에서는 유니버설 Windows 플랫폼(UWP), WPF, Silverlight 또는 Windows Phone 애플리케이션을 작업할 때 XAML 파일 편집 지원 기능을 추가로 이용할 수 있습니다. 이러한 기능에는 즉석 코드 품질 분석, 리팩터링, 코드 생성 및 재배열을 비롯하여 빠른 전체 솔루션 탐색이 포함됩니다.

코드 품질 분석

ReSharper의 코드 품질 분석 기능으로 XAML 파일에서 오류를 신속히 찾아 수정할 수 있습니다. 다음 몇 가지 예시를 통해 기능의 작동 방식을 살펴보겠습니다.

ReSharper에서 XAML 파일의 코드 문제를 강조 표시

예시 1. XAML 언어 수준 오류

XAML 2006만 허용되는 WPF 프로젝트를 작업 중이라고 가정해 보겠습니다. ReSharper는 XAML 2009의 제네릭 객체를 발견하면 해당 객체를 언어 오류로 강조 표시합니다. 강조 표시된 항목에서 Alt+Enter를 누르면 ReSharper가 System.Collections.Generic.List<string>에서 상속된 유형을 그 항목 대신 선언하도록 제안하는 빠른 수정을 표시합니다.

빠른 수정을 적용하면 ReSharper가 다음을 수행합니다.

  • List에서 상속된 새로운 래퍼 유형을 선언하는 새 .cs 파일을 생성합니다.
  • 원본 XAML 파일에서 TypeArguments 속성을 삭제하고, 객체 유형을 새로운 래퍼 유형으로 변경하고, 필요한 경우 새 네임스페이스 지시문을 삽입합니다.
ReSharper에서 XAML 파일의 코드 문제를 강조 표시

예시 2. 존재하지 않는 리소스

아직 선언되지 않은 리소스를 사용하는 경우, ReSharper에서 오류 강조 표시를 하여 해당 항목을 상기시킵니다.

Alt+Enter를 누르면 ReSharper가 누락된 리소스를 생성할 수 있는 가능한 몇몇 위치를 제안합니다.

생성된 리소스 유형이 아직 선언되지 않은 경우도 문제 없습니다. ReSharper가 사용 위치에서 CLR 유형 또는 XAML 유형(즉, UserControl)을 생성할 수 있는 옵션을 제공합니다. 2개 옵션 중 하나를 선택하면 기본 구현으로 파일이 생성됩니다.

XAML의 잘못 배치된 주석을 빠르게 수정

예시 3. 잘못 배치된 주석

요소 내에 실수로 주석이 배치되면 ReSharper가 해당 주석을 강조 표시하고 오류를 해결하기 위한 옵션을 제공합니다.

XAMLd의 중복 유형 한정자 수정

예시 4. 중복 유형 한정자

스타일 세터에 TargetType이 정의된 경우, ReSharper가 유형 한정자에서 중복을 탐지하고 수정을 제안합니다.

ReSharper의 스마트 완성 기능이 이벤트 핸들러 메서드를 생성 ReSharper 스마트 완성 기능이 올바른 색상 선택을 지원 ReSharper의 import 심볼 완성 기능을 이용해 아직 XAML 파일에서 참조되지 않은 네임스페이스로부터 유형을 가져올 수 있음

확장된 XAML IntelliSense

ReSharper의 코드 완성을 XAML 태그에서 활용할 수 있습니다. 또한 CamelHumps가 지원되어 속성을 빠르게 추가할 수 있습니다. 간단히 몇몇 심볼을 입력하고 Ctrl+스페이스를 누르기만 하면 ReSharper의 심볼 완성 기능이 제공하는 적합한 제안 목록이 표시됩니다.

Ctrl+Alt+스페이스를 눌러 스마트 완성을 실행하면 ReSharper가 코드 내의 위치에 따라 추가적인 컨텍스트별 옵션을 제공합니다. 예를 들어, 이벤트 핸들러 선언에서 스마트 완성을 실행하면 핸들러 메서드를 생성하는 옵션이 제안됩니다.

속성 내에서 스마트 완성을 사용하면 새로운 리소스(정적 또는 동적), 바인딩 또는 정적 요소에 대한 참조를 빠르게 생성할 수 있습니다.

ReSharper 코드 완성의 또 다른 탁월한 이점은 Background, OpacityMask와 같은 속성에서 기대되는 브러시의 색상을 표시한다는 것입니다.

또한 ReSharper는 XAML에서 import 심볼 완성을 지원합니다. 즉, 솔루션에서 참조되지만 현재 파일에 해당하는 네임스페이스 import 지시문이 없는 어셈블리의 유형을 완성할 수 있습니다.

물론 이러한 방식으로 ReSharper 코드 완성을 사용한 경우, 필요한 네임스페이스 import 지시문이 자동으로 삽입됩니다.

또는 XAML 파일 내에 모종의 이유로 가져오지 않은 유형이 있을 경우, ReSharper가 네임스페이스 지시문을 빠르게 생성할 수 있는 옵션을 제공합니다.

XAML 코드의 심볼에서 이동 XAML 코드에서 관련 파일로 이동 XAML 파일의 파일 구조

탐색 및 검색

ReSharper의 Navigate To(다음으로 이동) 메뉴는 C# 코드 파일에서와 동일한 방식으로 XAML 코드 요소에서 작동합니다. 심볼 선언 또는 사용 위치에서 Alt+'를 누르면 이동 가능한 여러 대상 위치가 포함된 메뉴가 열립니다.

Go To File Member(파일 멤버로 이동)를 통한 탐색은 C# 파일에서와 마찬가지로 XAML 파일에서도 작동하므로 특정 유형, 이름 또는 키를 가진 요소로 손쉽게 이동할 수 있습니다. 재차 언급하지만, 전체 이름을 입력할 필요가 없습니다. 소문자 CamelHumps가 지원되어 wl만 입력해도 WatchList를 찾을 수 있습니다.

XAML 파일에서 Ctrl+Alt+F7을 누르면 모든 관련 파일 목록이 나타납니다. 예를 들어, 코드에 숨은 파일, 현재 XAML 파일에 참조된 리소스 또는 컨트롤에 사용된 이미지 등이 있습니다.

Go to Declaration(선언으로 이동)(F12) 및 Ctrl-클릭을 이용한 탐색은 원본 C# 코드 파일에서처럼 XAML 파일에서도 동일한 방식으로 작동합니다. 예를 들어, Ctrl을 누른 상태로 특정 클래스의 이름을 마우스로 가리키면 ReSharper가 클래스 이름에 밑줄을 표시하고, 링크를 클릭하면 해당 클래스 정의로 바로 이동됩니다.

또한 코드 파일에서처럼 File Structure(파일 구조) 창에 XAML 파일 구조가 표시되므로, 찾고 있는 코드 요소로 빠르게 이동할 수 있습니다.

Find Usages(사용 위치 검색) 명령어를 실행하는 Shift+F12를 누르면 특정 XAML 요소의 사용 위치를 조회할 수 있습니다. ReSharper가 요소가 사용된 모든 위치를 표시합니다.

또는 사용 위치를 강조 표시하는 Shift+Alt+F11을 누르면 현재 파일에서 특정 심볼이 사용된 위치를 빠르게 훑어볼 수 있습니다.

종속성 속성용 템플릿 호출 종속성 속성용 템플릿 호출

종속성 속성 생성

종속성 속성 생성은 매우 지루한 작업일 수 있습니다. 이 문제 또한 ReSharper에서 해결해 드립니다. 코드 템플릿 엔진은 몇 번의 키 입력만으로 종속성 속성에 배포되는 상세한 코드 조각을 생성할 수 있을 정도로 매우 강력합니다. 에디터에서 라이브 템플릿 이름을 작성하기만 하면 입력해야 하는 모든 자리표시자에서 사용 가능한 지능적인 코드 완성을 통해 속성 및 해당 종속성의 속성 쌍이 배포됩니다.

이와 유사한 방식으로, ReSharper에서 정규 종속성 프로퍼티보다 훨씬 더 다루기 힘든 첨부된 프로퍼티를 배포하도록 설정할 수 있습니다. 라이브 템플릿이 배포되면, 수많은 변수를 모두 확인하여 해당하는 경우 ReSharper 코드 완성을 사용할 수 있습니다.

종속성 속성 및 첨부된 속성에 대한 라이브 템플릿은 현재 ReSharper에서 바로 사용할 수 있도록 포함되어 있지 않지만 해당 템플릿을 다운로드해서 가져올 수 있습니다.

ASP.NET에 지원되는 ReSharper 코드 완성

XML 및 XAML 편집 헬퍼

ReSharper는 XML 구문 작업을 간소화하고 XAML에서 사용할 수 있는 다양한 컨텍스트 액션을 지원합니다. 몇 가지만 예로 들면, 태그 이름을 다른 이름으로 대체하고, 속성을 중첩된 요소로 변환하거나, 태그를 제거하고 하위 항목을 승격할 수 있습니다.

또한 수십 가지의 XAML 전용 컨텍스트 액션을 통해 열 또는 행 정의를 추가/제거하고, 뷰와 리소스를 생성하고, 서로 다른 리소스 참조 유형 사이를 전환하고, 속성 세터를 스타일로 추출하는 등 다양한 작업을 수행할 수 있습니다.

XAML 스타일 추출 XAML 스타일 추출

XAML 코드 리팩터링

XAML 요소는 본질적으로 일반 클래스 멤버와 동등하기 때문에 C#에서 작동하는 일부 리팩터링을 XAML에서도 사용할 수 있습니다. 예를 들어 Refactor This(다음을 리팩터링) 메뉴를 열어서 리소스 이름을 변경하거나 리소스를 안전하게 삭제할 수 있습니다.

XAML에서 속성 또는 메서드의 참조를 탐색할 때 Refactor This 메뉴에 있는 리팩터링의 종류는 C# 또는 VB.NET 코드에서 해당 메뉴를 열었을 때 예상되는 항목과 동일합니다.

C# 및 VB.NET 리팩터링 이외에, XAML 전용 리팩터링이 몇 개 존재합니다.

XAML에서는 여러 컨트롤의 인라인 스타일을 정의한 다음, 스타일 정의에 맞게 컨트롤을 재배치하는 것이 일반적입니다. ReSharper는 Extract Style(스타일 추출) 리팩터링을 통해 이 작업을 간소화합니다.

이 리팩터링에 표시되는 대화상자에서는 추출하려는 속성 및 속성을 추출하여 보낼 대상 리소스(기존 리소스를 선택하거나 새로 만들 수 있음)를 결정할 수 있습니다.

Extract Resource(리소스 추출)Inline Resource(리소스 인라인화) 리팩터링을 이용하면 거의 모든 속성 할당(마크업 확장의 항목 포함)을 리소스로 이동하거나 그 반대로 이동할 수 있고, 리소스의 정의를 요소에 바로 연결할 수 있습니다.

ReSharper는 XAML 코드의 재배열을 지원

코드 재배열

ReSharper의 코드 재배열 기능을 사용하면 XAML 파일 내의 요소 또는 해당 요소 내의 속성을 이동할 수 있습니다. 두 작업 모두 Ctrl+Alt+Shift 키와 방향키를 눌러 수행할 수 있습니다.

속성을 작업할 경우, 이러한 키 조합으로 태그 내에서 속성을 이동할 수 있습니다. 왼쪽오른쪽 방향키를 누르면 속성의 위치가 변경됩니다. 그러나 아래 방향키를 누르면 해당 액션이 전체 태그에 영향을 줍니다.

아래 방향키는 다른 태그와 관련해서 전체 태그를 이동합니다. 태그와 그 내용을 모두 포함하기 위해 Ctrl+Alt+오른쪽 방향키선택 항목을 확장할 경우, 왼쪽오른쪽 방향키도 동일하게 사용할 수 있으나, 키 조합을 이용하면 현재 선택 항목의 '수준을 내려' 어떤 태그로든 해당 항목을 넣을 수 있다는 점에서 방향키와 다릅니다.

단축키 참고사항

이 페이지에 나온 모든 키보드 단축키는 ReSharper의 기본 'Visual Studio' 단축키에서 제공됩니다. ReSharper의 2가지 단축키에 관한 자세한 내용은 ReSharper 문서를 참조하세요.