C# 如何在UWP中从webview中打开“保存文件”对话框

C# 如何在UWP中从webview中打开“保存文件”对话框,c#,uwp,C#,Uwp,我接管了一个UWP项目,必须用下载按钮解决一个问题。在网站上,有一个指向软件包的链接。可以使用浏览器下载EXE。 在我的webview中,据我所知,我无法直接下载到磁盘,但应该可以打开标准浏览器来接管该部分。我设法从我的webview在标准浏览器中打开PDF。这对我和我的noob技能来说已经很棘手了,但现在它起作用了。我对EXE文件也做了同样的尝试,但似乎不起作用。以下是我迄今为止所做的: private async void WebView1_NewWindowRequested(WebVie

我接管了一个UWP项目,必须用下载按钮解决一个问题。在网站上,有一个指向软件包的链接。可以使用浏览器下载EXE。 在我的webview中,据我所知,我无法直接下载到磁盘,但应该可以打开标准浏览器来接管该部分。我设法从我的webview在标准浏览器中打开PDF。这对我和我的noob技能来说已经很棘手了,但现在它起作用了。我对EXE文件也做了同样的尝试,但似乎不起作用。以下是我迄今为止所做的:

private async void WebView1_NewWindowRequested(WebView sender, WebViewNewWindowRequestedEventArgs args)
    {
            if (args.Uri != null && args.Uri.OriginalString.ToLower().Contains(".pdf"))
            {
                return;
            }
            else
            { webView1.Navigate(args.Uri); }
        args.Handled = true;
    }
这对PDF是有效的,但当我对EXE做同样的操作时,它什么都不做(可见)

有什么想法吗

如何在UWP中从webview中打开“保存文件”对话框

如果uri包含
.exe
,则可以侦听事件处理程序,您可以创建以下载特定于exe文件的文件夹

private async void TestWebView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
    if (args.Uri != null && args.Uri.OriginalString.ToLower().Contains(".exe"))
    {
        try
        {

            StorageFile destinationFile = await KnownFolders.PicturesLibrary.CreateFileAsync(
                "test.exe", CreationCollisionOption.GenerateUniqueName);

            BackgroundDownloader downloader = new BackgroundDownloader();
            DownloadOperation download = downloader.CreateDownload(args.Uri, destinationFile);
            await download.StartAsync();
        }
        catch (Exception ex)
        {

        }
    }
}
马哈博解决方案

 string Link = args.Uri.Segments.Last();
 try
 {
     var messagedialog = new MessageDialog("Saving File " + Link + " to your Download folder.");
     await messagedialog.ShowAsync();
     StorageFile destinationFile = await DownloadsFolder.CreateFileAsync(Link, CreationCollisionOption.GenerateUniqueName);
     BackgroundDownloader downloader = new BackgroundDownloader();
     DownloadOperation download = downloader.CreateDownload(args.Uri, destinationFile);
     await download.StartAsync();
 }
 catch (Exception e)
 {


 }

谢谢你,尼科!你的回答使我回到正轨。我将其修改为string Link=args.Uri.Segments.Last();请尝试{var messagedialog=new messagedialog(“将文件“+Link+”保存到下载文件夹”);wait messagedialog.ShowAsync();StorageFile destinationFile=wait DownloadsFolder.CreateFileAsync(Link,CreationCollisionOption.GenerateUniqueName);BackgroundDownloader downloader=新的BackgroundDownloader()。。。