2

사용자 지정 컨트롤 "CustomControl"에 사용자 지정 연결 속성 "CustomAttachedProperty"가 정의되어 있습니다. 제어 XAML을 folowing 것은이 될 생각으로 렌더링, 제대로 작동 : 나는 XamlReader.Load를 통해 같은 XAML을로드()를 할 때Windows 8, XamlReader가 xaml에 사용자 지정 연결 속성을로드 할 수 없음

<ns:CustomControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:ns="using:MyNamespace"> 
    <TextBlock ns:CustomControl.CustomAttachedProperty="0" Text="This element causes Parse Error" /> 
</ns:CustomControl> 

문제가 시작됩니다. 문제의 근원은 붙어 있던 재산이다. 첨부 된 속성 XamlReader없이 문자열을 올바르게로드 할 수 있습니다.

XamlReader.Load는 CustomControl이 정의 된 동일한 어셈블리에서 호출됩니다.

누구에게 잘못된 생각이 있습니까?

답변

1

전적으로 답을 드릴 수는 없지만 문제는 새로운 xaml 플랫폼과 리플렉션 및 메타 데이터 처리 방식에 있습니다. 기본적으로 xaml 플랫폼은 커버 아래에 기본 있기 때문에 xaml을 올바르게 구문 분석하기 위해 리플렉션에 액세스 할 필요가 없습니다.

이것이 해결되는 방법은 IXamlMetadataProvider를 사용하는 것이고, 솔직히 말해서 구현하는 엉덩이에 있습니다. 정상적인 빌드 프로세스의 일부로 앱용 빌드 프로세스가 생성되지만 xaml reader 및 라이브러리에서는 제대로 작동하지 않습니다. 결국 스스로 구현할 필요가 있습니다. XamlTypeInfo.g.cs의 obj/Debug 폴더에서 앱에 사용할 수 있습니다.

내 솔루션은 App.xaml.cs에서 구문 분석 할 xaml을 가진 작은 프로젝트를 만들고, 컴파일러가 위 파일을 작성한 다음 내 자신을 만들기 위해 그것을 추출하도록했습니다.

commit to Caliburn Micro을 보면 내가 결국 무엇을 볼 수 있는지 알 수 있습니다.

+0

대단히 감사합니다. Nigel, 제안 된 코드를 확인하여 유용 할 수 있는지 확인해 보겠습니다. – Andris