Tapped イベントに応答して PDF ファイルを読み込みたい。
ファイルをプロジェクトに追加し ([追加] > [既存のアイテム])、[ビルド アクション] を [コンテンツ] に、[出力ディレクトリにコピー] を [新しい場合はコピー] に設定しました。
必要なコードは次のようなものになると思います。
async Task LoadTutorial()
{
await Launcher.LaunchUriAsync(new Uri("what should be here to access the output folder?"));
}
私が正しければ、Uri として何を渡す必要がありますか? そうでなければ、これはどのように達成されますか?
アップデート
関連するメモとして、提案されたスキームを使用して XAML に画像を追加するには、次のようにするとうまくいくと思いました。
<Image Source="ms-appx:///assets/axXAndSpaceLogo.jpg"></Image>
...しかし、そうではありません。
更新 2
これを試してPDFファイルを開きます(サブフォルダーではなく、プロジェクトのルートにあります):
async private void OpenTutorial()
{
IStorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
IStorageFile file = await folder.GetFileAsync("ms-appx:///PlatypusTutorial.pdf");
await Launcher.LaunchFileAsync(file);
}
...この実行時例外が発生し、上記の最初の行でスローされました。
更新 3
そしてこれで、提供されたリンクから適応:
var uri = new System.Uri("ms-appx:///ClayShannonResume.pdf");
var file = Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(uri);
await Launcher.LaunchFileAsync(file);
...コンパイル時のエラーが表示されます:
'Windows.System.Launcher.LaunchFileAsync(Windows.Storage.IStorageFile)' に最適なオーバーロードされたメソッドの一致には、いくつかの無効な引数があります
-と:
引数 1: 'Windows.Foundation.IAsyncOperation' から 'Windows.Storage.IStorageFile' に変換できません
...最後の行に。
更新 4
Lecrenski、Netherlands、Sanders、およびAshelyによる「Pro Windows 8 Programming」の76ページによると、これは機能するはずです。
<Image Source="Assets/axXAndSpaceLogo.jpg" Stretch="None"></Image>
...(IOW、「ms-appx:///」ジャズは不要です)、多かれ少なかれそうです。私の特定のケースでは、私の(大きな)画像で、これをしなければなりませんでした:
<Image Source="Assets/axXAndSpaceLogo.jpg" Width="120" Height="80" HorizontalAlignment="Left"></Image>
幅と高さの設定がないと、画像はサイよりも大きく表示され、フライアウトの右側に収まりませんでした。
更新 5
これはPDFファイルを開くために機能することがわかりました(「PlatypusTut.pdf」がプロジェクトに追加され、「ビルドアクション」が「コンテンツ」に設定され、「出力ディレクトリにコピー」が「新しい場合はコピー」に設定されました):
IStorageFolder folder = Windows.ApplicationModel.Package.Current.InstalledLocation;
IStorageFile file = await folder.GetFileAsync("PlatypusTut.pdf");
bool success = await Launcher.LaunchFileAsync(file);
if (!success)
{
MessageDialog dlgDone = new MessageDialog("Unable to open the Tutorial at this time. Try again later.");
await dlgDone.ShowAsync();
}
...しかし、これは設計時、ローカルでのみ機能するのだろうか。これをユーザーのマシンにインストールしても機能しますか? IOW、単に「PlatypusTut.pdf」を GetFileAsync() に渡すだけで十分ですか?