2012-11-15 3 views
0

xaml에 설명 된 동적 WPF UI가 있습니다.WPF XamlReader.Parse 동적 UI XML 네임 스페이스

xaml은 아래에서 볼 수 있습니다. 내 문제가

XAML을 얻으려면 내가이

var context = new ParserContext(); 
context.XamlTypeMapper = new XamlTypeMapper(new string[] { });  

context.XmlnsDictionary.Add("Custom","http://myCompany.de"); 
context.XamlTypeMapper.AddMappingProcessingInstruction("http://myCompany.de","FooNamespace","FooAssemblyName"); 

같은 파서 컨텍스트의 네임 스페이스와 어셈블리를 설정해야합니다로드, 내 사용자 정의 네임 스페이스가 자동으로 해결되지 않습니다가 없습니다 더 나은 방법? 나는 이것을 동적으로 필요로한다. 그리고 나는 앱 도메인을 스캔하고 싶지 않습니다.

일반 "System Xaml Reader"에서 어떻게 수행됩니까?

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:Custom="http://myCompany.de" 
    x:Class="Foo.Container" 
    mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="300"> 
    <UserControl.DataContext> 
     <Custom:FooViewModel/> 
    </UserControl.DataContext> 
    <Grid> 

    </Grid> 
</UserControl> 

답변

2
Clr-Namespace URI's without an assembly mentioned only work as compiled Xaml. 

그러나 경우에 당신 같은 네임 스페이스와 어셈블리를 제공합니다 - 당신의 열린 우리당에 ";assembly=AssemblyName" 접미사가 성공적으로 구문 분석됩니다.

그러나 귀하의 경우 xmlns:Custom="http://myCompany.de"에 어셈블리 참조를 추가 할 수 없습니다. 그래서, 유일한 방법은이 경우 수동으로 매핑을 추가하는 것입니다.

프로젝트에 속한 사용자 지정 네임 스페이스의 경우 접미사 assembly을 사용하여 구문 분석 할 수 있습니다.

+0

대부분의 경우 정보를 제공해 주셔서 감사합니다. URL없이 어셈블리 이름과 구문을 사용할 수 있습니다. Thirdparty 컨트롤의 경우 참조를 보류합니다. –