2011-06-17 15 views
4

XAP内にデプロイされたXMLファイルからサンプルデータを読み込むWindows Phone 7アプリケーションを作成しています。これらのXMLファイルはローカライズされているため、サポートされているカルチャごとにファイルがあります。XAP内のファイルが存在するかどうかを確認する方法は?

構造:

SampleData.xml 
SampleData.de.xml 
SampleData.fr.xml 
SampleData.it.xml 
... 

XMLの名前負荷には、現在のUIカルチャに基づいています。ファイルの名前は簡単に作成できますが、現在のUIカルチャのローカライズ版が存在するかどうかを確認するにはどうすればよいですか?

System.IO.File.Exists()私が電話でサポートされている各培養のためのダミーファイルを作成することができますのWindows Phone 7で使用できませんが、それはかなり醜いですが、エラーが発生しやすいとフォールバックを許可していません。中立的な言語に何か案は?

答えて

2

AFAIK XAPファイルに含まれるファイルを列挙する方法はありません。あなたはXAPを作成しているので、存在するファイルと存在しないファイルを知っておく必要があります。ローカライズされたバージョンをロードしようとしている場合や、存在しない場合はデフォルトのバージョンにフォールバックする場合は、パッケージ内のファイルを列挙する代わりに、使用可能なローカライズされたすべてのバージョンをリストする別のファイルを作成できます。

また、XDocument.Load()のようなものをtry-catch内で使用できます。おそらくFileNotFoundExceptionが投げられ、処理してデフォルトのバージョンを読み込むことができます。成功したリソースをロードするために、文字列、ファイルがビルドアクション「リソース」とマークされている場合

3
private bool IsFileExists(string relativePath) 
{ 
    return Application.GetResourceStream(new Uri(relativePath, UriKind.Relative)) != null; 
} 

relativePathはスラッシュ

1

で始めるべきではありません、あなたは、「コンポーネント/ /」を使用してローカルパスの接頭辞があります。

return Application.GetResourceStream(new Uri("/PhoneProject1;component/" + relativePath, UriKind.Relative)) != null; 
関連する問題