XAML 데이터 바인딩 진단

XAML 프로젝트에서 작업하는 개발자는 애플리케이션에서 XAML 데이터 바인딩 오류를 감지하고 해결해야 하는 경우가 많습니다. 이제 Visual Studio 2019 버전 16.8 이상 및 Visual Studio 2022에는 애플리케이션을 디버그하는 동안 이러한 성가신 데이터 바인딩 오류를 찾는 데 도움이 되는 도구가 있습니다. 일반적인 바인딩 실패의 예는 다음과 같습니다.

  • 존재하지 않는 속성 이름에 바인딩: {Binding Wrong.Name}
  • 열거형이 필요할 때 부울에 바인딩하는 것과 같이 잘못된 형식의 값에 바인딩: Visibility="{Binding IsVisible}"

이러한 바인딩은 리플렉션을 사용하여 런타임에 계산되기 때문에 XAML 편집기가 항상 바인딩을 catch할 수 있는 것은 아니지만 빌드는 여전히 성공합니다. 오류는 런타임에만 발생합니다.

XAML 데이터 바인딩은 다음 문서에 설명되어 있습니다.

바인딩 오류는 항상 Visual Studio의 디버그 출력 창에 기록되었습니다. 그러나 디버그 출력에는 바인딩 오류를 보이지 않게 스크롤하는 다른 디버깅 정보가 포함되어 있기 때문에 바인딩 오류를 놓치기 쉽습니다. 다음은 디버그 출력 창 내에서의 WPF 바인딩 오류의 예입니다.

Screenshot of the output window containing a binding failure.

바인딩 실패는 창 위쪽에서 수백 줄 떨어져 있을 수 있으며 텍스트는 오류가 있는 바인딩을 정확히 알려주지 않으므로 이에 대해 생각해 보고 검색해야 합니다.

이제 XAML 바인딩 오류 도구 창을 사용하면 XAML 내의 파일 위치와 같은 각 오류의 관련 데이터와 함께 오류가 있는 바인딩을 명확하게 확인할 수 있습니다. 또한 오류가 있는 바인딩에 포커스를 설정한 상태에서 XAML 편집기를 검색, 정렬, 열기를 수행하여 오류를 조사하는 데 유용한 기능이 많이 있습니다.

Screenshot of the XAML Binding Failures tool window.

이러한 행을 두 번 클릭하면 다음 이미지와 같이 바인딩의 원본 XAML이 열립니다.

Screenshot of example bindings in the XAML editor.

XAML 바인딩 오류 도구 창

디버깅하는 동안 XAML 바인딩 오류 도구 창을 사용할 수 있습니다. 창을 열려면 디버그>Windows>XAML 바인딩 오류로 이동합니다.

Screenshot of the XAML Binding Failures option in the Debug menu.

또는 애플리케이션 도구 모음에서 바인딩 오류 단추를 선택합니다. 아이콘 옆의 숫자는 도구 창에 표시되는 바인딩 오류 수를 보여 줍니다.

Screenshot of the in-app toolbar showing the binding failures button.

도구 창에 바인딩 오류가 없으면 아이콘 옆에 숫자 없이 회색으로 표시됩니다. 이 기능은 애플리케이션을 실행하는 동안 유용합니다. 아이콘이 빨간색으로 표시되고 숫자가 나타나면 아이콘을 클릭하여 도구 창으로 빠르게 이동하면 오류가 있는 바인딩을 확인할 수 있습니다. Visual Studio 도구 창을 감시할 필요가 없습니다. 바인딩이 실패하면 아이콘을 통해 즉시 알 수 있습니다.

Screenshot of the in-app toolbar showing the binding failures button with no failures.

비슷한 아이콘이 라이브 시각적 트리 도구 창에도 나타납니다.

Screenshot of the binding failures button within the Live Visual Tree tool window.

다음은 XAML 바인딩 오류 도구 창의 모든 구성 요소에 대한 설명입니다.

Screenshot of XAML Binding Failures tool window.

  • 위쪽의 도구 모음에는 다음과 같은 단추가 포함되어 있습니다.
    • 오류 목록 지우기: 이 기능은 앱에 새 페이지를 표시하고 바인딩 오류가 표시되는지 확인하려고 할 때 유용합니다. 새 디버깅 세션을 시작하면 목록이 자동으로 지워집니다.
    • 선택한 행 삭제: 오류가 수정되었거나 관련이 없는 경우 목록에서 삭제할 수 있습니다. 바인딩이 다시 실패하면 삭제된 행이 다시 표시됩니다.
    • 모든 필터 지우기: 텍스트 검색과 같이 목록에 필터가 있으면 이 단추는 필터를 지우고 전체 목록을 표시합니다.
    • 중복 결합: 동일한 바인딩이 항목 템플릿 내에 있을 때 여러 번 실패하는 경우가 많습니다. 중복 결합 단추를 선택하면(윤곽선 포함) 모든 중복 오류가 단일 행으로 표시됩니다. Count 열에서는 오류가 발생한 횟수가 표시됩니다.
  • 상단 모서리에 있는 검색 바인딩 실패 상자를 사용하면 특정 텍스트가 포함된 오류로만 오류를 필터링할 수 있습니다.
  • 테이블 열은 순서대로 다음을 표시합니다.
    • 오류 또는 경고에 대한 행인지를 표시하는 아이콘입니다.
    • XAML에서 실패한 {Binding}으로 이동하는 경우 꺾쇠 괄호 <>를 표시하는 아이콘이 지원됩니다. 지원되는 플랫폼 섹션을 참조하세요.
    • 데이터 컨텍스트: 바인딩의 원본 개체에 대한 형식 이름입니다.
    • 바인딩 경로: 바인딩의 속성 경로입니다.
    • 대상: 바인딩의 값이 설정되는 형식 및 속성 이름입니다.
    • 대상 형식: 바인딩 대상 속성에 필요한 형식입니다.
    • 설명: 이 열에는 바인딩의 정확히 실패한 항목에 대한 자세한 정보가 포함되어 있습니다.
    • 파일, , 프로젝트: 알려진 경우 바인딩이 정의된 XAML의 위치입니다.
  • 행 또는 선택된 여러 행을 마우스 오른쪽 단추로 클릭하면 열을 표시하거나 숨기거나 그룹화하기 위한 표준 옵션이 포함된 상황에 맞는 메뉴가 표시됩니다. 다른 옵션은 다음과 같습니다.
    • 행 또는 단일 열의 모든 텍스트를 클립보드에 복사합니다.
    • 원본 복사 오류를 복사하면 디버그 출력 창에 표시된 텍스트가 복사됩니다.
    • 소스 보기는 선택한 행 하나의 XAML 바인딩 소스로 이동합니다.
    • 열을 초기화하면 열 표시 및 정렬에 대한 모든 변경 내용이 취소되어 원래 표시된 내용으로 빠르게 돌아갑니다.

목록을 정렬하려면 열 머리글을 클릭합니다. 추가 열을 기준으로 다시 정렬하려면 Shift 키를 누른 상태에서 다른 열 머리글을 클릭합니다. 표시할 열과 숨길 열을 선택하려면 바로 가기 메뉴에서 열 표시를 선택합니다. 열이 표시되는 순서를 변경하려면 열 머리글을 왼쪽이나 오른쪽으로 끕니다.

행을 두 번 클릭하거나 Enter 키를 눌러 소스로 이동한 후 F8 또는 Shift+F8을 눌러 바인딩 오류 목록을 아래로 또는 위로 이동할 수 있습니다. 이는 목록을 보여 주는 Visual Studio의 다른 창과 같습니다.

지원되는 플랫폼

바인딩 오류가 디버그 출력에 기록되면 대부분의 XAML 플랫폼이 지원됩니다. 일부 플랫폼에서는 소스로 이동할 수 있는 추가 소스 정보를 디버거에 제공합니다.

플랫폼 지원됨 지원되는 소스로 이동
WPF .NET Framework 아니요
WPF .NET 5.0 RC2+
UWP 아니요
WinUI3 데스크톱 아니요
MAUI(다중 플랫폼 앱 UI) 아니요
Xamarin 4.5.0.266-pre3+
Xamarin 이전 4.5.0.266-pre3 아니요 아니요

XAML 핫 다시 로드 옵션은 Visual Studio에서 작업할 소스로 이동하기 위해 사용하도록 설정해야 합니다. 이 옵션은 도구>옵션>디버깅 대화 상자에 있습니다.

Screenshot of the XAML Hot Reload options dialog.

소스로 이동은 XAML 소스 파일에 정의된 바인딩에서만 작동하며 코드를 통해 만든 바인딩에는 적용되지 않습니다. 소스로 이동하는 것을 지원하는 행을 명확하게 확인할 수 있습니다. 두 번째 열에 꺾쇠 괄호 아이콘이 없으면 다음 스크린샷에서 강조 표시된 행과 같이 소스로 이동하는 것은 지원되지 않습니다.

Screenshot showing a XAML binding failure without a source location.

.NET Framework WPF의 경우 데이터 바인딩 오류를 감지하고 표시하려면 XAML 바인딩 오류 창의 디버그 출력에 데이터 바인딩 오류가 표시되어야 합니다. 이 옵션은 도구>옵션>디버깅>출력 창>WPF 추적 설정 대화 상자에 있습니다. 설정이 끄기 또는 위험인 경우 데이터 바인딩 오류는 디버그 출력에 기록되지 않으며 감지할 수 없습니다. .NET 5, .NET 6 이후 버전에서 WPF를 사용하면 데이터 바인딩 출력 설정이 오류 목록에 영향을 주지 않습니다.

Screenshot of WPF output options.