Использование справки 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");
Если вы включаете систему.Окна.Формы.DLL, вы также можете сделать:
System.Windows.Forms.Help.ShowHelp(null, @"help.chm");
кроме того, есть статьи здесь о добавлении контекстно-зависимой справочной системы в WPF.
Я пробую Простая помощь с WPF, который также обращается к контекстно-зависимой справке на основе ключевых слов. Пока это кажется хорошим. Все, что мне нужно сделать, это взломать и написать приличную помощь!
вы можете использовать http://www.pinvoke.net/default.aspx/hhctrl.HtmlHelp чтобы открыть справку chm в указанной теме и иметь больше контроля над тем, как показано окно chm.