Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WebBrowser尝试下载本地PDF,而不是显示它_C#_Wpf - Fatal编程技术网

C# WebBrowser尝试下载本地PDF,而不是显示它

C# WebBrowser尝试下载本地PDF,而不是显示它,c#,wpf,C#,Wpf,我有一个WPF C#应用程序,在我的一个窗口中,我让一个WebBrowser显示一个本地的PDF文件。但是,当我导航到此区域时,它会尝试下载,而不是显示。有没有我错过的设置,或者我做错了 HelpView.xaml: HelpViewModel.cs: public WebBrowser pdfBrowser; ... public HelpViewModel() : base("Help") { pdfBrowser = new WebBrowser(); pdfBrowse

我有一个WPF C#应用程序,在我的一个窗口中,我让一个WebBrowser显示一个本地的PDF文件。但是,当我导航到此区域时,它会尝试下载,而不是显示。有没有我错过的设置,或者我做错了

HelpView.xaml:

HelpViewModel.cs:

public WebBrowser pdfBrowser;
...
public HelpViewModel() : base("Help")
{
    pdfBrowser = new WebBrowser();
    pdfBrowser.Navigate("Path/To/PDF/File.pdf");
}


这里有几种可能性

首先要考虑的是你应该有一个URL,而不仅仅是一个文件路径。换句话说,它应该启动文件://

下面是一些工作代码:

     private void Window_ContentRendered(object sender, EventArgs e)
     {
        string unencodedurl = "file:///C:/Program Files (x86)/Adobe/Acrobat Reader DC/Reader/Welcome.pdf";
        string encodedurl = WebUtility.HtmlEncode(unencodedurl);
        wb.Navigate(encodedurl);
     }
请注意,这将在渲染窗口后运行,而不仅仅是更新控件。我对字符串进行html编码

顺便说一句


在viewmodel中不应该有UI控件

尝试使用x:name=“pdfBrowser”将ContentPresenter更改为WebBrowser,然后在代码隐藏中执行pdfWebViewer.Navigate(fullPathToPDF);这也会产生同样的问题如果我单击打开文件,它会在Internet Explorer窗口中打开这仍然会尝试下载而不是显示上面的代码会在我的c驱动器上显示pdf文件。只想检查一下,您是如何定义/查找
wb
?这是我视图中的一个控件。Contentrendered意味着它已经被呈现了。我还安装了acrobat reader-我没有随机选择pdf。将字符串作为源属性(而不是导航)也可以工作