c# - WPF 应用程序 - 按 F1 在浏览器中打开帮助(不适用于 CHM 文件)

标签 c# wpf

仅供引用 - 我是 C#/WPF 新手。

我的任务是在现有 C# WPF 应用程序中通过 F1 键整合上下文相关帮助。

我们不想走使用 chm(windows html 帮助)的路线,而是想在 wiki 上打开一个特定的页面,这样可以更容易地维护和更新。

我能找到的所有示例都演示了如何使用 chm 文件。此外,他们需要为每个元素添加帮助提供者,这可能会非常耗时。

相反,我一直在考虑尝试确定哪个控件(或至少它的容器或窗口)具有焦点以确定要打开的页面的想法。然后我会将其名称与我们数据库中的 url 匹配。为此,我尝试以递归方式遍历从 VisualTreeHelper 返回的 FrameworkElement 对象,但它返回的元素数量惊人,我觉得这是一种试图找到我想要的东西的低效方法。

有人对我最好的方法有什么建议吗?你能告诉我打开浏览器并从基于按键的 WPF 应用程序中将 URL 传递给它的示例吗?

感谢任何帮助。我已经在这上面旋转了太久了!

拉尔克银行

最佳答案

如果您有大量控件,这可能会很麻烦。但是开始可能是为 F1 上的每个控件和过滤器处理 PreviewKeyDown 或 PreviewKeyUp。然后将其放入处理程序中:

System.Diagnostics.Process.Start(@"[the url]");

[url] 特定于控件,因此您不需要查找表,因为您知道自己在哪个事件处理程序中。

您还可以使用分配给所有 PreviewKeyDown 或 PreviewKeyUp 事件的一个事件处理程序的路径,然后使用基于发件人对象信息的数据库查找。

关于c# - WPF 应用程序 - 按 F1 在浏览器中打开帮助(不适用于 CHM 文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879084/

相关文章:

c# - 在 View 模型之间切换

wpf - DataTrigger.EnterActions.BeginStoryboard 未开始

c# - 从其父页面调用 UserControl 方法

c# - 如何使用 BugFilter 通过 C# OTA 获取 QC11.0 中的缺陷列表

c# - WPF UI 未更新

c# - WPF 处理拖放和左键单击

c# - Xml序列化序列问题

c# - 创建一个简单的 c# dll 并从 ruby​​ 访问它

c# - 是否可以从另一个类库中的静态类获取 ConnectionString?

c# - 如何在 C# 代码后面显示 PictureBox