다음을 통해 공유


XamlReader 클래스

정의

XAML을 구문 분석하고 해당 개체 트리를 만들기 위한 XAML 프로세서 엔진을 제공합니다.

public ref class XamlReader sealed
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class XamlReader final
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class XamlReader
Public NotInheritable Class XamlReader
상속
Object Platform::Object IInspectable XamlReader
특성

Windows 요구 사항

디바이스 패밀리
Windows 10 (10.0.10240.0에서 도입되었습니다.)
API contract
Windows.Foundation.UniversalApiContract (v1.0에서 도입되었습니다.)

예제

이 예제에서는 Load를 호출하여 XAML 문자열에서 단일 타원을 만듭니다. 그런 다음, 생성되었지만 연결이 끊긴 Ellipse 를 실행 중인 UWP 앱에 이미 있는 요소의 Children 컬렉션에 연결합니다. 마지막으로 예제는 쿼리를 사용하여 추가된 위치에서 Ellipse 에 다시 액세스하고 해당 속성 중 하나를 변경합니다.

string xaml =
"<Ellipse Name=\"EllipseAdded\" Width=\"300.5\" Height=\"200\" 
Fill=\"Red\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"/>";
object ellipse = XamlReader.Load(xaml);
//stackPanelRoot is the visual root of a Page in existing XAML markup already loaded by the appmodel
stackPanelRoot.Children.Add(ellipse as UIElement);
//walk the tree using XLinq result and cast back to a XAML type to set a property on it at runtime
var result = (from item in stackPanelRoot.Children
  where (item is FrameworkElement) 
  && ((FrameworkElement) item).Name == "EllipseAdded"
  select item as FrameworkElement).FirstOrDefault();
((Ellipse) result).Fill = new SolidColorBrush(Colors.Yellow);

설명

XamlReader는 문자열 형식의 XAML 태그 입력을 기반으로 개체를 만드는 메서드가 있는 유틸리티 클래스입니다. XamlReader는 Windows 런타임 XAML 파서에서 XAML을 구문 분석하는 방법과 UWP 앱의 UI를 정의하는 데 XAML을 사용하는 방법과 평행한 개체 생성 동작을 제공합니다.

XamlReader.Load를 사용하여 XAML 입력을 구문 분석하면 Windows 런타임 개체의 런타임 개체 트리가 생성됩니다. 개체 트리는 전체 트리의 일부를 탐색하여 런타임에 이러한 개체에 대해 프로그래밍하는 방법을 제공합니다.

XamlReader.Load 메서드를 사용하여 XAML에서 개체를 만들 때 이해해야 할 몇 가지 개념이 있습니다.

  • XAML 콘텐츠 문자열은 단일 루트 요소를 정의해야 합니다.
  • XAML 콘텐츠 문자열은 올바른 형식의 XML일 뿐만 아니라 유효한 XAML이어야 합니다.
  • XAML 콘텐츠는 기본 xmln을 정의해야 합니다. 일반적으로 로 식별되는 http://schemas.microsoft.com/winfx/2006/xaml/presentationWindows 런타임 XAML 어휘입니다.
  • XAML 네임스페이스 매핑에서 참조되는 모든 사용자 지정 어셈블리를 애플리케이션에서 이미 사용할 수 있어야 합니다.
  • XAML은 x:Class 특성을 지정하거나 이벤트 처리기에 대한 XAML 정의 특성을 포함해서는 안 됩니다.
  • 일반 XAML 이름 범위에서 FindName 을 사용하여 추가된 런타임 개체를 찾을 수는 없지만 만든 개체의 특정 XAML 이름 범위 내에서 검색할 수 있습니다. 자세한 내용은 XAML 이름 범위를 참조하세요.
  • 개체 만들기 논리는 로드된 XAML을 런타임에 코드 숨김 클래스와 통합할 수 없습니다. 이벤트 처리기를 추가하려면 Load 결과의 개체 트리 구조 내에서 가져온 개체를 참조하고 처리기(예: +=)를 연결하기 위한 언어별 구문을 사용하여 코드에서 이 작업을 수행해야 합니다.
  • 기존 XAML 콘텐츠가 있어야 합니다. 콘텐츠의 전체 트리를 바꿀 수 없습니다. 로드된 XAML 페이지의 앱 모델 의미가 활성 상태로 유지되도록 최소한 원래 루트 요소를 유지해야 합니다.
  • Load에서 만든 개체는 기본 개체 트리의 한 위치에만 할당할 수 있습니다. 동일한 XAML에서 만든 개체를 애플리케이션의 기본 개체 트리의 다른 영역에 추가하려면 반환 값에 대해 다른 대상을 사용하여 동일한 입력 문자열을 사용하여 XAML을 여러 번 구문 분석해야 합니다.
  • 나머지 주 개체 트리는 설정할 적절한 속성을 지원해야 합니다.

메서드

Load(String)

올바른 형식의 XAML 조각을 구문 분석하고 해당 개체 트리를 만들고 개체 트리의 루트를 반환합니다.

LoadWithInitialTemplateValidation(String)

올바른 형식의 XAML 조각을 구문 분석하여 해당 개체 트리를 만들고 개체 트리의 루트를 반환합니다. 또한 연결된 템플릿의 로드 시간 유효성 검사를 수행합니다.

적용 대상

추가 정보