2009-05-07 11 views
0

사용자가 단추 클릭당 스택 패널에 사용자 정의 컨트롤을 만들고 사용자가 usercontrols에 데이터를 입력 할 수있는 응용 프로그램 (약속 관리자)이 있습니다. 여태까지는 그런대로 잘됐다.WPF 컨트롤을 직렬화 할 때 예외가 발생했습니다.

XamlWriter.Save()를 사용하여 스택 패널을 직렬화했습니다. 그러나 나는 다시 응용 프로그램이 XamlReader.Load() 나는 다음과 같은 예외가 얻을로 시작하는 다음 번에로드 할 때 :

"System.Windows.Markup.XamlParseException : 가 설정할 수 없습니다 이름 속성 값 을 ' '테두리'는 '항목'의 범위에 있으며 범위에 정의되어있을 때 이미 이름이 으로 등록되어 있습니다 'Line'4 'Position '43 '. "

나를 위해 유용하지 않은 것 같은 모든 컨트롤 이름을 제거하는 Google의 해결 방법을 발견했습니다.

이제 XML 직렬화를 사용해야하는 이유는 무엇입니까? 적어도 xml-serialization과 xslt를 사용해야하는 xml-course에 과학 프로젝트를 만들어야한다는 것이므로 좋은 생각이 될 것입니다. (

답변

3

조언이 하나 있습니다. UI를 직렬화하지 말고 기본 데이터를 직렬화하십시오.

예를 들어 사용자 정의 컨트롤에 저장된 데이터를 나타내는 Data라는 클래스를 만듭니다.이 클래스가 [Serializable ] 특성 wpf의 데이터 바인딩 기능을 사용하여 데이터 개체 CRUD 작업 관리이 시점에서 XmlSerializer를 사용하여 데이터 개체를 serialize 및 deserialize 할 수 있으며 deserialize 할 때 데이터 개체에 사용자 정의 컨트롤을 바인딩하면 작업이 완료됩니다.

위시 나는 간단한 샘플을 쓸 시간이 있었다.

희망이 도움이되었습니다.

관련 문제