1

ローカルストレージからの画像に基づいてタイルを変更するWindows8アプリを作成しています。

まず、URLからローカルストレージに画像を保存します。

         const string fileName = "test.jpg";
        StorageFile storageFile = await ApplicationData.Current.LocalFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting);

        using (IRandomAccessStream storageStream = await storageFile.OpenAsync(FileAccessMode.ReadWrite))
        {
            HttpClient client = new HttpClient();
            Stream imageStream = await client.GetStreamAsync("http://suntsu.smugmug.com/Public/NikonTest/i-5L8JLTz/0/Th/20120124_Nikon_Macro_2-Th.jpg");

            using (var memoryStream = new MemoryStream())
            {
                imageStream.CopyTo(memoryStream);
            }
            await RandomAccessStream.CopyAndCloseAsync(imageStream.AsInputStream(), destination: storageStream.GetOutputStreamAt(0));
        }

これは機能し、次の方法でファイルにアクセスできます。

  //var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri( "ms-appdata:///local/" + fileName));

今、私はこの画像を私の新しいライブとして追加したいと思います:

            XmlDocument tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileWideImageAndText01);
        XmlNodeList tileTextElements = tileXml.GetElementsByTagName("text");
        tileTextElements.Item(0).AppendChild(tileXml.CreateTextNode(fileName));
        XmlNodeList tileImageAttributes = tileXml.GetElementsByTagName("image");
        tileImageAttributes[0].Attributes[1].NodeValue = "ms-appdata:///local/" + fileName;

問題は、何も起こらず、タイルに画像が表示されないことです。

問題は「ms-appdata:/// local/」+fileNameに関連していると思います。、アプリフォルダからファイルをロードするためのコードを使用すると、機能するためです。"ms-appx:///images/graySquare.png";

質問:「ms-appdata:/// local/」+fileNameです。ローカルストレージからの画像へのリンクを設定するのは間違っていますか?そして、それはどのように行われなければなりませんか?

編集:新しく作成されたタイルを追加するコードを追加するのを忘れました。

                ScheduledTileNotification tileNotification = new ScheduledTileNotification(tileXml, DateTimeOffset.UtcNow.AddSeconds(count));
            TileUpdateManager.CreateTileUpdaterForApplication().EnableNotificationQueue(true);
            TileUpdateManager.CreateTileUpdaterForApplication().AddToSchedule(tileNotification);

編集:このURIが正しく、画像が存在することを確認するために、「ms-appdata:///local/myimage.jpg」を検証する可能性はありますか?

4

1 に答える 1

1

見つけた。問題は道ではありませんでした。「ms-appdata:///local/myimage.jpg」は正しかった。ファイルを書き込むためのコードが正しくないため、0バイトのイメージしかありませんでした。これにより例外やメッセージは発生しませんでしたが、タイルは更新されませんでした。

于 2012-12-15T16:03:40.230 に答える