1

Visual Studio 2012 デザイナーを使用する Windows ストア アプリで、デザイナーのモデル オブジェクトを読み込めるようにしたいと考えています。エラーなしで ms-appx:/// uri を使用して xaml ファイルを提供する前に、これを何度も実行しました。ただし、このプロジェクトでは、クラスをインスタンス化し、別の形式の生の xml をモデル オブジェクトに変換できるようにする必要があります。

次の xaml を使用して、デザイナーのクラスをインスタンス化しています。

d:DataContext="{Binding Source={d:DesignInstance Type=model:Walkthroughs, IsDesignTimeCreatable=True}}"

私のウォークスルークラスには、最初にこれを行うコードがありました:

public Walkthroughs()
{
        if (Windows.ApplicationModel.DesignMode.DesignModeEnabled)
            AppDataLoader.LoadWalkthroughs(this, XDocument.Load("ms-appx:///SampleData/walkthroughs.xml"));
}

XDocument.Load が ms-appx:/// uri を認識しないという問題に最初に遭遇したため、コードを非常に単純なものに変更しました。

AppDataLoader.LoadWalkthroughs(this, XDocument.Load(@"C:\walkthroughs.xml"));

これで、パス '' へのアクセスが拒否されました。

私もいくつかのディレクトリを試しましたが、役に立ちませんでした。管理者として Visual Studio を実行しています。プレフィックスを完全に削除すると、次のエラーが発生します。

Could not find file 'C:\Users\{me}\AppData\Local\Microsoft\VisualStudio\11.0\Designer\ShadowCache\omxyijbu.m4y\yofsmg1x.avh\walkthroughs.xml'.  

デザイナーがオブジェクトをインスタンス化するときに、ファイル システムからファイルをロードできた人はいますか?

ありがとう -ジェフ

4

1 に答える 1

0

XDocument.Load(string uri)からのプロジェクト リソースの読み込みに問題があるようですms-appx:/

2 番目のアプローチについて:「C:」への直接アクセスは許可されていません。アクセスできる特別なフォルダはほんの一握りです 。これに対する私の回避策を確認してください(私のxmlファイルはAssets私のプロジェクトのフォルダー内にあります:

var storageFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
storageFolder = await storageFolder.GetFolderAsync("Assets");
var xmlFile = await storageFolder.GetFileAsync("data.xml");
var stream = await xmlFile.OpenReadAsync();           
var rdr = new StreamReader(stream.AsStream(), System.Text.Encoding.GetEncoding("ISO-8859-1")); //needed if you have "ä,ß..." in your xml file
var doc = XDocument.Load(rdr);
于 2013-09-28T08:16:34.773 に答える