无法在Metro应用程序中启动默认应用程序

时间:2013-01-28 20:06:50

标签: c# .net xaml windows-8 microsoft-metro

好的,Windows 8附带了一个很酷的PDF和XLS阅读器应用程序,名为Reader。当用户单击我的应用程序中的“帮助”按钮时,我有一个我想要显示的帮助文档。我的应用程序应该使用该文档类型的默认查看器启动PDF文档。

但它不会。没有错误,没有例外,设置断点显示没有信息。我的代码是:

<Button x:Name="help" Style="{StaticResource HelpAppBarButtonStyle}" Tag="Help" Click="help_Click_1" />

    private async void help_Click_1(object sender, RoutedEventArgs e)
    {

        try
        {
            Windows.Storage.StorageFile file =
                await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"\Assets\User Guide.pdf");
            await Windows.System.Launcher.LaunchFileAsync(file);
        }
        catch (Exception exception)
        {
            Debug.WriteLine(exception.Message);
        }
    }

现在,在解决方案资源管理器中,有通常的文件和文件夹。我在根目录中也有一个Assets文件夹,PDF文档位于这个根文件夹中。

我不确定为什么这不起作用,但我相信它可能与我如何指向上述代码中的文件有关:

await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"\Assets\User Guide.pdf");

如何使用该文档类型的默认应用程序正确显示Assets文件夹中包含的文档?

1 个答案:

答案 0 :(得分:2)

我测试了你的代码,在我开始工作之前我必须解决两个问题:

  1. 确保pdf文件的Build Action设置为Content。在我将该文件包含在项目中时,我的情况设置为None
  2. 您需要删除文件路径中的起始反斜杠:Package.Current.InstalledLocation.GetFileAsync(@"Assets\User Guide.pdf")
  3. 在我更改了上述两个文件后,在我的默认PDF查看器中打开了该文件。但即使在此之前,也会出现异常,描述出现了什么问题,尽管我最初没有注意到它,因为你的静音尝试/捕获代码。

    如果它仍然不适合您,则可能与您的机器配置有关。确保正确设置了pdf文件的默认查看器。