更改工作项窗体布局
TFS 2017 |TFS 2015 |TFS 2013
可以通过导出 XML 文件并修改 节的内容来更改工作项窗体 FORM 布局。 修改并导入 XML 文件之后,可以验证在更新的工作项类型中所做的更改。 可以进行的布局更改类型包括但不限于下面列出的情况:
- 更改窗体上字段的标签或位置
- 将字段组从一个选项卡移动到另一选项卡
- 添加新选项卡或列
重要
本主题适用于使用旧窗体布局 (TFS 2017 和早期版本) 本地 XML 项目自定义。 有关 TFS 2017 及更高版本,请参阅 WebLayout 和 Control 元素。
有关可以放在工作项窗体中的控件的概述,请参阅 指定工作项窗体控件。 有关 部分顶级结构元素的概述, FORM 请参阅。 设计工作项窗体。
更新 WIT 的 XML 定义
如果对 WIT 自定义很新,请注意以下事项:
- 若要自定义 WIT 的任何方面,需要更新 WIT 的 XML 定义。 所有WITD XML元素参考中介绍了 WIT XML 定义
- 如果要自定义使用新工作项体验的 Web 窗体,需要引用 WebLayout 和 Control 元素
- 如果要自定义客户端窗体以用于Visual Studio,需要引用布局 XML 元素引用
- 按照自定义工作项跟踪 Web 窗体 中 概述的步骤序列操作。
导出并打开 WIT 定义文件
基于所进行的自定义的范围,执行以下步骤之一:
如果要修改单个项目的工作项类型:
运行 witadmin exportwitd 以导出要修改的工作项类型的 XML 文件。 有关详细信息,请参阅 导入、导出和管理工作项类型。
打开 Visual Studio 中的 文件。
如果要修改 WIT 以自定义进程模板:
移至下载过程模板的位置。
打开 WIT XML 文件。
更改 FORM 部分的布局
找到
<TabGroup>XML 文件的 部分。 请注意,链接和文件附件等项都有元素,其中<Tab>每个元素<Tab>都包含<Control>呈现相应控件的元素。<Tab Label="Links"> <Control Type="LinksControl" /> </Tab> <Tab Label="File Attachments"> <Control Type="AttachmentsControl" /> </Tab>将两个元素合并到包含两个控件的单个 Links 和 Attachments 元素中,将上一步骤中显示的 XML 替换为以下示例中所示的新
<Tab><Tab>XML:<Tab Label="Links and Attachments"> <Control Type="LinksControl" Label="Links" LabelPosition="Top" /> <Control Type="AttachmentsControl" Label="Attachments" LabelPosition="Top" /> </Tab>找到 定义中的
<FORM><Layout>部分,该部分描述要修改的组,例如分类组。<Group Label="Classification"> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> </Column> </Group>注意
为获得最佳结果,每个 Control(控件)或 Group(组)应显示在一个 Column(列)中,即使该列跨越整个窗体宽度也应如此。 相应地,每列应该显示在一个组中,即使该组没有可见的标签或边界也应如此。
选择以下行并将其复制到剪贴板以便稍后使用。
<Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" />删除以下 XML 中以 和 结尾的行,以从窗体上的当前位置中删除分类
<Group Label="Classification"><Group>组。<Layout> <Group> <Column PercentWidth="70"> <Control Type="FieldControl" FieldName="System.Title" Label="&Title:" LabelPosition="Left" /> </Column> <Column PercentWidth="30"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Discipline" Label="&Discipline:" LabelPosition="Left" /> </Column> </Group> <Group Label="Classification"> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="&Area:" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="&Iteration:" LabelPosition="Left" /> </Column> </Group>在 部分中
<TabGroup>,找到定义"详细信息"选项卡<TabGroup>行:<Tab Label="Details"> <Group> <Column PercentWidth="50"> <Group Label="General"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Issue" Label="Iss&ue:" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.ExitCriteria" Label="E&xit criteria:" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Build.IntegrationBuild" Label="Integration &build:" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.TaskHierarchy" Label="Task C&ontext:" LabelPosition="Left" ReadOnly="True" /> </Column> </Group> </Column> <Column PercentWidth="50"> <Group Label="Schedule"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.RemainingWork" Label="Remaining &work (hours):" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.CompletedWork" Label="Com&pleted work (hours):" LabelPosition="Left" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.StartDate" Label="Start Dat&e:" LabelPosition="Left" ReadOnly="True" /> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Scheduling.FinishDate" Label="&Finish Date:" LabelPosition="Left" ReadOnly="True" /> </Column> </Group> </Column> </Group> </Tab>若要将这些控件移动到" 详细信息" 选项卡,将剪贴板的内容粘贴到 元素 下方。
<Tab Label="Details"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> <Group> <Column PercentWidth="50"> <Group Label="General"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Issue" Label="Iss&ue:" LabelPosition="Left" /> ...进行以下更改以围绕移动的字段创建分组并将字段划分为两列:
<Tab Label="Details"> <Group Label="Classification"> <Column PercentWidth="50"> <Group> <Column PercentWidth="100"> <Control Type="WorkItemClassificationControl" FieldName="System.AreaPath" Label="Area" LabelPosition="Left" /> <Control Type="WorkItemClassificationControl" FieldName="System.IterationPath" Label="Iteration" LabelPosition="Left" /> </Column> </Group> </Column> <Column PercentWidth="50"> <Group> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="MyCompany.MyProcess.Category" Label="Category" LabelPosition="Left" /> </Column> </Group> </Column> </Group> <Group> <Column PercentWidth="50"> <Group Label="General"> <Column PercentWidth="100"> <Control Type="FieldControl" FieldName="Microsoft.VSTS.Common.Issue" Label="Iss&ue:" LabelPosition="Left" /> ...保存所做更改。
若要将新的工作项类型导入单个项目,请参阅导入、 导出和管理工作项类型。 若要将工作项类型添加到进程模板,请参阅 添加工作项 的类型定义。
验证网页或 HTML 内容是否显示在工作项窗体中
在团队资源管理器,选择 "刷新 ",从服务器下载最新更新。
这些更新包括您刚导入的更改。 请等待几秒钟,直到加载了“工作项”节点。 仍在加载的节点显示"工作" 一词。
使用所修改的工作项类型创建新工作项。
请注意,Classification 组已不再在主窗体上。 在"链接和附件"选项卡上,选择"详细信息"选项卡以查看所做的更改的结果。