私はしばらくの間WPFアプリケーションに取り組んできましたが、CHM形式のヘルプドキュメントを添付するときが来ました。
しかし悲しいかな! WinformsでCHMファイルを表示する標準的な方法であるHelpProviderは魔法のように消えてしまい、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 クラスを使用するのはどうですか