Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 记录应用程序_.net_Wpf_Winforms - Fatal编程技术网

.net 记录应用程序

.net 记录应用程序,.net,wpf,winforms,.net,Wpf,Winforms,最好的应用程序不需要任何文档。 理想的第二步是提供简洁明了的工具提示的应用程序。 同时工具提示也是必须的!。。。但是..规则是要被打破的;-)最后一种情况往往导致可怕的后果。所以这是起点。 我们有相当大的应用程序没有文档。我们重构得很慢,但用户现在需要一些文档。我们也有几个技术作者,他们可以记录我们的软件,他们有一些备用资源。 我有一个办法来减轻他们的工作 用户将鼠标移动到控件,激活(通过快捷方式)DocTool并输入控件的说明。此说明将成为指向控件的工具提示。 因此,所有这些功能都是一个组件

最好的应用程序不需要任何文档。 理想的第二步是提供简洁明了的工具提示的应用程序。 同时工具提示也是必须的!。。。但是..规则是要被打破的;-)最后一种情况往往导致可怕的后果。所以这是起点。 我们有相当大的应用程序没有文档。我们重构得很慢,但用户现在需要一些文档。我们也有几个技术作者,他们可以记录我们的软件,他们有一些备用资源。 我有一个办法来减轻他们的工作

用户将鼠标移动到控件,激活(通过快捷方式)DocTool并输入控件的说明。此说明将成为指向控件的工具提示。 因此,所有这些功能都是一个组件

问题1:有人知道这种组件是否存在吗


问题2:如何唯一标识控件以供以后引用?(自动化UI测试工具以某种方式实现了这一点)

选项1
您可以签出每个控件的工具提示属性,并对其应用类似的技术

选项2
创建可编辑的外部数据源(例如XML文件)。此数据源应至少有一个
Id
工具提示

创建一个封装数据源(例如
ToolTipData
)的单例,并通过数据源的
Id
公开对每一行的访问

为类型为
string
FrameworkElement
定义名为
ToolTipId
的附加属性。将其附加到每个需要工具提示的控件。(确保对每个控件应用唯一的值。)
ToolTipId
值应映射到数据源中的
Id

在附加的属性回调中,使用
工具提示设置工具提示,如下所示:

frameworkElement.ToolTip = ToolTipData.Default.Tooltips[ToolTipId];

DocTool是您已经拥有的还是您想要的?我想你可以扩展所有的基本控制。您将如何确保安全性,以便不仅仅是任何人都可以激活DocTool?这将简化技术作者的工作,但更多的活动部件意味着开发人员需要更多的工作。@BalamBalam DocTool是我们想要的。我们知道哪些用户具有激活该工具的写入权限。这个“更多”是可以的,因为我们的应用程序被包括技术作者在内的许多部门内部使用,所以用户离我们很近,我们不想让他们生气=)请注意,每种情况都是不同的(您可能使用CSV数据或可在web上检索的内容),但这就是我如何开始解决问题的方法我如何将Id映射到控制?即使在WPF中,也需要为每个控件设置x:Uid,更不用说WinForms了。应该有另一种方法来识别表单上的控件。可能我会使用可视化树(WPF或WinForms)中控件名称构造的某种路径将
Id
映射到控件,您可以使用
ToolTipId
附加属性(如答案中所述)<代码>控件
工具提示
数据源.Id
工具提示
。我建议不要使用构造的路径,因为在您的数据源中,您可能会有一个类似如下的Id:
“Window.Grid.ListBox.ListBoxItem.StackPanel.CheckBox”
,这看起来相当笨拙;)嗯,附加属性很好。但它们只适用于WPF。正如您所说,我们必须为每个控件设置tooltipid属性,这正是我试图避免的。如果WinForms也需要它,我通常会将其他数据放在控件的
标记
属性中。但是,您必须有某种方法来识别目标控件,因此可以在必要的控件上添加id值,或者创建复杂的算法来确定控件,或者。。。?这可能是一个困难的问题;如果您知道一个答案,请提供另一个答案。