UserControls를 만들 때 컨트롤이 초기화 될 때마다 XAML이 파싱되는 것처럼 보입니다.WinRT/Win8에서 XAML 구문 분석의 효율성은 어느 정도입니까?
public void InitializeComponent()
{
if (_contentLoaded)
return;
_contentLoaded = true;
global::Windows.UI.Xaml.Application.LoadComponent(this, new global::System.Uri("ms-appx:///Views/MyView.xaml"), global::Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation.Application);
}
이뿐만 아니라 실버 라이트에 존재 : 나는 UserControl을을 만들 때
예를 들어, 다음과 같습니다 구성 요소를 초기화하는 자동 생성 된 코드가있다.
컨트롤을 한 번 또는 두 번 만드는 것은별로 중요하지 않지만 Visual-States 및 바인딩이 포함 된 각 UserControl에 큰 시각적 트리가 있고 응용 프로그램 수명주기마다 여러 번 만들면 의미가 있습니다. C#을 사용하여 시각적 컨트롤을 구축하여 성능을 향상시킵니다.
는 그래서, 내 질문은 :
파서/프레임 워크는 XAML 파일을 "기억"과 후속 호출에 다시 재 구문 분석을 피할 수 있습니까? 즉, XAML의 이진 표현을 만들므로 텍스트를 다시 읽을 필요가 없습니다.
이것은 WPF의 경우입니다. 라이브러리를 컴파일하면 코드 파일과 BAML 파일이 생성됩니다. 그러나 Silverlight 및 WinRT에는 BAML이 없으므로 컴파일 된 DLL을 들여다 보면 실제로 XAML 파일이 일반 텍스트로 표시됩니다. 따라서 LoadComponent (...) 메서드의 동작이 의심 스럽습니다. – Laith
Windows Phone 8 용 Silverlight에서 XAML의 이진 직렬화를 추가 한 것처럼 보였습니다. 그러나 Windows 8에서이 기능에 대해 들어 본 적이 없었습니다. 성능 차이를 확인할 가치가 있을지 모르지만, 처리량에 비해 무시할 수 있을지도 모릅니다 레이아웃 업데이트. –