ファイルのプロパティでビルドアクションをコンテンツにするとXAPファイルの中に埋め込まれます。XAPファイルをZIPとして展開するとファイルがそのまま出てきます。プログラムから読み込む方法は以下の通りです。
var uri = new Uri("foo.txt", UriKind.Relative); var stream = Application.GetResourceStream(uri).Stream;
ファイルが存在しないとApplication.GetResourceStream()はnullを返すので、実際に使うときはチェックした方が無難でしょう。
XmlXapResolver
別の方法としてXmlXapResolverを使った方法があります。Application.GetResourceStream()の方が手軽なので、特にこちらを使う必要はないと思います。
var uri = new Uri("foo.txt", UriKind.Relative); var xap = new XmlXapResolver(); var stream = xap.GetEntity(uri, null, typeof(Stream)) as Stream;
XmlXapResolverという名前ですが、XMLでなくても読み込めるようです。UriにはXAPルートからの相対パスを渡します。置かれる位置はプロジェクトルートからの相対パスと同じです。プロジェクトにフォルダを作れば、コンテンツもフォルダに置かれます(例:"foo/bar.txt")。ファイルが存在しないと例外が発生するので、適宜try〜catchで処理してください。ファイル一覧を取得する方法はないようです。