2009-09-30 3 views
0

일부 개체를 serialize하기 위해 XAML을 사용하고 있으며 대부분의 경우 잘 작동합니다.XamlReader.Parse가 "속성이 존재하지 않습니다."를 throw하지 않는 방법 XamlParseException?

현재 직면하고있는 문제는 데이터 구조를 변경하면 모든 이전 개체가 아래 예외를 생성한다는 것입니다. 값을 잃어도 상관 없어요.

이러한 예외를 해제하고 xaml 판독기에서 알 수없는 속성을 무시하도록 할 수 있습니까? 지금이 작업을 수행 할 방법이 없으면 새 System.Xaml 네임 스페이스에 해당 작업을 수행 할 수있는 무언가가 있습니까?

System.Windows.Markup.XamlParseException: The property 'BorderPadding' does not exist in XML namespace 'clr-namespace:TemplateGenerator;assembly=App_Code'. Line '1' Position '158'. 
    at System.Windows.Markup.XamlParser.ThrowExceptionWithLine(String message, Int32 lineNumber, Int32 linePosition) 
    at System.Windows.Markup.XamlParser.ThrowException(String id, String value1, String value2, Int32 lineNumber, Int32 linePosition) 
    at System.Windows.Markup.XamlParser.WriteUnknownAttribute(XamlUnknownAttributeNode xamlUnknownAttributeNode) 
    at System.Windows.Markup.XamlParser.ProcessXamlNode(XamlNode xamlNode, Boolean& cleanup, Boolean& done) 
    at System.Windows.Markup.XamlParser.ReadXaml(Boolean singleRecordMode) 
    at System.Windows.Markup.TreeBuilderXamlTranslator._Parse() 
    at System.Windows.Markup.XamlParser.Parse() 
    at System.Windows.Markup.XamlTreeBuilder.ParseFragment() 
    at System.Windows.Markup.TreeBuilder.Parse() 
    at System.Windows.Markup.XamlReader.XmlTreeBuildDefault(ParserContext pc, XmlReader reader, Boolean wrapWithMarkupCompatReader, XamlParseMode parseMode, Boolean etwTracingEnabled) 
    at System.Windows.Markup.XamlReader.Load(XmlReader reader) 
    at System.Windows.Markup.XamlReader.Parse(String xamlText) 

답변

0

.net 4.0의 새로운 System.Xaml.XamlReaderSettings 클래스에서 DontThrowOnErrors 플래그를 사용해야합니다.

그렇게 을 할 수있는 쉬운 방법이 없습니다,

http://msdn.microsoft.com/en-us/library/system.xaml.xamlreadersettings.dontthrowonerrors%28VS.100%29.aspx 불행하게도 그 속성은 .NET 4의 최종 버전 안으로 들어가지는 못했습니다 참조하십시오.

+1

분명히 그 속성은 .net 4.0의 릴리스 버전으로 만들지 못했습니다. –

0

코드에서 이전 특성을 처리하려면 예외를 명시 적으로 트랩 한 다음 파일을 계속 읽어야합니다.

데이터 구조를 변경하면 이전 XAML이 유효하지 않으며 파서가 올바르게 반대하고 있습니다.

관련 문제