다음을 통해 공유


방법: 대규모 XAML 파일 처리

업데이트: 2007년 11월

XAML은 복잡한 데이터 구조를 표현할 수 있습니다. 따라서 일부 XAML 파일은 크기가 매우 커질 수 있습니다. 예를 들어, 벡터 이미지에 대한 XAML 표현은 크기가 몇 MB에 이를 수 있습니다. 대규모 XAML 파일은 Windows Presentation Foundation(WPF) Designer for Visual Studio에서 성능 문제를 발생시킬 수 있습니다. 다음 절차에서는 대규모 XAML 블록으로 인해 발생하는 성능 문제를 처리하는 방법을 보여 줍니다.

XAML 뷰만 사용

Visual Studio에서 대규모 XAML 파일로 작업할 때 성능을 개선하는 가장 좋은 방법은 WPF Designer에서 디자인 뷰를 사용하지 않는 것입니다. 디자인 뷰를 사용하지 않고 Visual Studio에서 XAML을 편집하는 방법은 두 가지입니다.

하나는 디자인 뷰를 끄고 XAML 뷰만 사용하는 것입니다. 텍스트 편집기 옵션을 변경하여 XAML 파일이 전체 XAML 뷰에서만 열리도록 지정할 수 있습니다. 이 방법을 사용할 경우 XAML 편집이 완벽하게 지원되고 문서 개요 창 및 태그 탐색기를 사용할 수 있습니다.

두 번째 방법은 소스 코드 편집기를 사용하는 것입니다. 연결 프로그램 대화 상자에서 소스 코드 편집기를 선택하여 소스 코드 편집기에서 XAML 파일을 열 수 있습니다. 이 방법은 간단하며 대규모 XAML 파일로 작업할 때 최적의 성능을 제공합니다. 이 경우 XAML 편집은 완벽하게 지원되지만 문서 개요 창과 태그 탐색기는 표시되지 않습니다.

전체 XAML 뷰에서 XAML 파일을 열려면

  • 텍스트 편집기에서 XAML 옵션에 대해 항상 전체 XAML 뷰에서 문서 열기 옵션을 선택합니다. 자세한 내용은 옵션 대화 상자, 텍스트 편집기, XAML, 서식을 참조하십시오.

    다음에 XAML 파일을 열면 XAML 뷰 전용으로 열립니다.

소스 코드 편집기에서 XAML 파일을 열려면

  1. 솔루션 탐색기에서 XAML 파일을 마우스 오른쪽 단추로 클릭하여 엽니다.

  2. 바로 가기 메뉴에서 연결 프로그램을 선택합니다.

  3. 연결 프로그램 대화 상자에서 소스 코드(텍스트) 편집기를 선택하고 확인을 클릭합니다.

    XAML 파일이 코드 편집기에서 열립니다.

디자인 뷰

디자인 뷰를 사용하여 대규모 XAML 블록으로 작업할 수 있지만 이 경우 성능 문제가 발생할 수 있습니다. 다음은 이와 같은 경우 성능을 개선하는 데 도움이 되는 몇 가지 방법입니다.

디자인 뷰에서 대규모 XAML 블록으로 작업할 때 성능을 향상시키려면

  • 대규모 XAML 블록을 별도의 UserControl로 이동시킵니다. 이렇게 하면 성능에 거의 영향을 주지 않고 대규모 XAML 파일을 디자인 화면에 추가할 수 있습니다.

  • 대규모 XAML 블록을 XAML 리소스 파일로 이동시킵니다. 이 리소스 파일을 사용자 지정 컨트롤과 연결하면 디자이너에서 사용자 지정 컨트롤을 열 때만 대규모 XAML 파일이 로드됩니다.

  • 대규모 XAML 블록이 포함된 업데이트를 최소화하도록 XAML의 구조를 바꿉니다.

    다음 코드 예제에서는 이미지에 대해 설명하는 대규모 XAML 블록이 포함된 Canvas 요소를 보여 줍니다. 이 요소의 형제 단추 컨트롤 중 하나를 변경하면 부모 모눈과 해당 자식 모눈이 업데이트됩니다. 이 경우 대규모 XAML 블록과 함께 Canvas 요소가 업데이트되므로 성능이 저하될 수 있습니다.

    <Window x:Class="WpfApplication1.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
            <Button />
            <Button />
            <Button />
        </Grid>
    </Window>
    

    다음 코드에서는 성능 문제가 발생하지 않도록 앞에 나온 XAML의 구조를 바꾸는 방법을 보여 줍니다.

    <Window x:Class="WpfApplication2.Window1"
        xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
        <Grid>
            <Canvas>
                <!-- Many paths describing an image. -->
            </Canvas>
    
            <Grid>
                <Button />
                <Button />
                <Button />
            </Grid>
        </Grid>
    </Window>
    

    이제 단추 컨트롤이 더 이상 Canvas 요소의 형제 단추 컨트롤이 아니므로 단추 중 하나를 변경해도 Canvas 요소가 업데이트되지 않습니다.

참고 항목

개념

WPF Designer 로드 실패 문제 해결

참조

옵션 대화 상자, 텍스트 편집기, XAML, 서식

기타 리소스

WPF 디자이너의 XAML 및 코드

WPF Designer의 오류 디버깅 및 해석