Использование справки 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.

Как насчет использования класса справки вместо внешнего открытия файла

Другие вопросы по тегам