使用F1帮助(CHM格式)使用WPF

我已经在WPF应用程序上工作了一段时间,现在是时候将CHM格式的帮助文档附加到它上面了。

可惜! HelpProvider是在Winforms中显示CHM文件的标准方法,它已经神奇地消失了,并且在WPF中没有对应物。 我一直在尝试使用WindowsFormsHost来生成一个新的控件,所以我可以实际显示帮助,但实质上它只是抓住整个UI的控制权。

更多细节:我有一个我想要的菜单项,当点击时,打开CHM文件。

首先我设置了WindowsFormsHost ……

host = new System.Windows.Forms.Integration.WindowsFormsHost(); helpForm = new System.Windows.Forms.Control(); host.Child = helpForm; host.Visibility = System.Windows.Visibility.Hidden; this.grid1.Children.Add(host); hp = new System.Windows.Forms.HelpProvider(); hp.HelpNamespace = "Somehelpfile.chm"; hp.SetHelpNavigator(helpForm, System.Windows.Forms.HelpNavigator.TableOfContents); 

然后我说,瞧,揭示自己。

 private void Help_Click(object sender, RoutedEventArgs e) { host.Visibility = Visibility.Visible; helpForm.Show(); hp.SetShowHelp(helpForm, true); } 

我不确定从哪里开始。 当我显示helpForm时,它会模糊/覆盖现有的UI,我得到的是一个灰色的空WPF窗口,没有帮助文件。

任何接受者?

叫我疯了,但你不能这样做:

 System.Diagnostics.Process.Start(@"C:\path-to-chm-file.chm"); 

如果您包含System.Windows.Forms.dll,您还可以执行以下操作:

 System.Windows.Forms.Help.ShowHelp(null, @"help.chm"); 

另外,这里有一篇关于向WPF添加上下文相关帮助系统的文章。

我正在尝试使用WPF轻松帮助 ,它还可以根据关键词解决上下文相关的帮助问题。 到目前为止似乎很好。 我需要做的就是破解并写下一些体面的帮助!

您可以使用http://www.pinvoke.net/default.aspx/hhctrl.HtmlHelp在指定主题上打开chm帮助,并更好地控制如何显示chm窗口。

如何使用Help类而不是从外部打开文件