2013-03-31 3 views
0

Windows 8 앱 개발을 처음 사용합니다. .NET에서 작성한 이전 응용 프로그램을 이식하려고합니다. 이 응용 프로그램은 "Ressource"로 프로젝트에 추가 된 네 개의 XML 파일로 저장되는 기본 데이터를 사용하고 System.Xml.Serialization.XmlSerializer를 사용하여 해당 데이터를 deserialize합니다.Windows 8 앱에서 기본 데이터로드

Windows 8 Store App에서 이와 같은 데이터를 제공하는 가장 좋은 방법은 무엇입니까? 애셋 폴더에 넣으시겠습니까?

Windows 8 앱에서 이와 같은 데이터를로드하고 바인딩하는 가장 좋은 방법은 무엇입니까?

I 해요

답변

1
당신은 스토어 앱에서 자원을 이용할 수있다

, 여기에 예입니다 예를 들어 폴더의 이름이 Data이고 XML 파일이 Data1.xml 인 경우 dataName 매개 변수를 위의 "data.Data1.xml"과 같은 메소드에 보내야합니다.

데이터 바인딩의 경우 가장 좋은 방법은 해당 XML을 XML 컨텐트를 반영하는 객체 또는 객체 목록에 비 직렬화하는 것입니다.

+0

감사합니다.이 기능은 저에게 효과적이었습니다. Stream에서 직접 XmlSerializer.Deserialize 메서드를 사용했습니다. 비동기 연산이 내 미래 프로그래밍에 중요하다고 생각하기 때문에 나는 chue x의 링크를 체크 아웃 할 것이다. – Hinek

1

어떤 데이터를 제공하는 가장 좋은 방법이 될 것입니다 ... 모든 것을 당신이 직접 답변, 유용한 링크 또는 데이터 로딩 및 Windows 8의 결합에 비디오를 내게 줄 수있는 감사 Windows 8 Store App에서 이와 같이? 애셋 폴더에 넣으시겠습니까?

예, 자산 폴더에 넣으십시오. 빌드 속성을 "Content"+ "Copy To Output"으로 설정하십시오. 이 작업을 완료 한 후에는 다음 URL을 사용하여 응용 프로그램에서 액세스 할 수 있습니다 : 예를 들어 ms-appx:///Assets/myxmlfile.xml

:

StorageFile xmlFile = await StorageFile.GetFileFromApplicationUriAsync 
    (new Uri("ms-appx:///Assets/myxmlfile.xml")); 

것은 위의 당신이 파일을 읽는 데 사용할 수있는 파일 객체를 제공합니다. 분명히 Assets 폴더에서 읽고 있기 때문에 파일은 읽기 전용입니다.

Windows 8 앱에서 이와 같은 데이터를로드하고 바인딩하는 가장 좋은 방법은 무엇입니까?

데이터 바인딩의 경우, 이는 아마도 한 답변에서 다루기에는 너무 큰 것입니다. 이 Windows 8 Data Binding Sample을 살펴볼 수도 있습니다. 당신이 하위 디렉토리에 XML 파일을 넣으면

public static string GetXmlContentsFromResource(Assembly asm, string dataName) 
{ 
    string contents = ""; 

    Stream stream = asm.GetManifestResourceStream(asm.GetName().Name + "." + dataName); 
    using (StreamReader reader = new StreamReader(stream)) 
    { 
    contents = reader.ReadToEnd(); 
    } 
    return contents; 
} 

당신을 위해, 솔루션에 XML 파일을 추가하고 "포함 리소스"로 표시하고,해야

+0

안녕하세요, 빠른 답변 주셔서 감사합니다. 나는 데이터를로드하는 메서드에서 기다릴 수 없으므로'GetFileFromApplicationUriAsync' 호출에'.GetResults()'를 추가했습니다. 그러나 예외가 발생했습니다. "예상치 못한 시간에 메서드가 호출되었습니다."이것이 내 변경이나 일반적인 문제로 인해 발생하는 경우 확실하지 않습니다. – Hinek

+1

@Hinek - 사용자가 할 수없는 이유는 무엇입니까? ''기다리는거야? ' 'async'와'await'이 어떻게 작동하는지 익숙하지 않다면 그것은 매우 광범위한 주제입니다. 시작을 위해 다음 링크를 참조하십시오. http://msdn.microsoft.com/en-us/library/vstudio/hh191443.aspx –

+1

많은 사람들은 기존 코드에서 작동하지 않기 때문에 비동기 호출을 사용할 수 없다고 생각합니다. 문제는 이러한 비동기 호출의 대부분이 동일한 스레드에서 연속성을 가지므로 GetResult를 호출하면 교착 상태가 발생합니다. 비동기 성은 전염성이 있으며 많은 코드를 변경해야하는 경우가 많지만 선택 사항이기도합니다. –

관련 문제