Использование справки F1 (формат CHM) с WPF
Некоторое время я работал над приложением WPF, и пришло время прикрепить к нему справочный документ формата CHM.
Но увы! HelpProvider, стандартный способ отображения файлов CHM в Winforms, волшебным образом исчез и не имеет аналогов в WPF. Я пытался использовать WindowsFormsHost для создания нового элемента управления, чтобы я мог отобразить справку, но по сути он просто захватывает контроль над всем пользовательским интерфейсом.
Немного подробнее: у меня есть пункт меню, который я хочу при нажатии открыть файл 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, он скрывает / переопределяет существующий интерфейс, и все, что я получаю, это серое пустое окно WPF без файла справки.
Любой берущий?
5 ответов
Назовите меня сумасшедшим, но вы не могли бы просто сделать:
System.Diagnostics.Process.Start(@"C:\path-to-chm-file.chm");
Если вы включите System.Windows.Forms.dll, вы также можете сделать:
System.Windows.Forms.Help.ShowHelp(null, @"help.chm");
Также здесь есть статья о добавлении контекстно-зависимой справочной системы в WPF.
Я пробую Easy Help с WPF, которая также обращается к контекстно-зависимой справке на основе ключевых слов. Пока это кажется хорошим. Все, что мне нужно сделать, это взломать и написать приличную помощь!
Вы можете использовать http://www.pinvoke.net/default.aspx/hhctrl.HtmlHelp чтобы открыть справку chm по указанной теме и лучше контролировать отображение окна chm.
Как насчет использования класса справки вместо внешнего открытия файла