我已经在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窗口,没有帮助文件。
任何接受者?
答案 0 :(得分:26)
如果您包含System.Windows.Forms.dll,您还可以执行以下操作:
System.Windows.Forms.Help.ShowHelp(null, @"help.chm");
此外,还有一篇关于向WPF添加上下文相关帮助系统的文章here。
答案 1 :(得分:25)
叫我疯了,但你不能这样做:
System.Diagnostics.Process.Start(@"C:\path-to-chm-file.chm");
答案 2 :(得分:8)
我正在尝试Easy Help with WPF,它还根据关键词解决了上下文相关的帮助。到目前为止似乎很好。我需要做的就是破解并写下一些不错的帮助!
答案 3 :(得分:2)
您可以使用http://www.pinvoke.net/default.aspx/hhctrl.HtmlHelp在指定主题上打开chm帮助,并更好地控制chm窗口的显示方式。
答案 4 :(得分:0)
如何使用Help类而不是外部打开文件