{"id":7313,"date":"2006-09-29T19:32:00","date_gmt":"2006-09-29T19:32:00","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/visualstudioalm\/2006\/09\/29\/custom-controls-in-work-item-types\/"},"modified":"2019-02-14T17:52:31","modified_gmt":"2019-02-15T01:52:31","slug":"custom-controls-in-work-item-types","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/devops\/custom-controls-in-work-item-types\/","title":{"rendered":"Custom Controls in Work Item Types"},"content":{"rendered":"<h2><font size=\"5\"><font face=\"Verdana\">Work Item Tracking Custom Controls<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"AlertTextinList1\"><font size=\"2\"><font face=\"Verdana\">Note: This is draft documentation for the Team Foundation Server SP1 Beta. The contents of this article should not be considered as final.&nbsp; All feedback is welcome.<\/p>\n<p><\/font><\/font><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">Introduction<\/p>\n<p><\/font><\/font><\/h2>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">The Work Item Tracking Custom Controls mechanism provides a standard way to enhance <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem<\/font><\/u><\/span>s to include enhanced user-interface capabilities, extended event-based rules, and workflow capabilities. These custom controls can be bound to <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Client.Field<\/font><\/u><\/span>s within <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem<\/font><\/u><\/span>s. These custom controls enable users to view and edit data.<\/p>\n<p><\/font><\/font><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">Purpose of the Work Item Tracking Custom Controls<\/p>\n<p><\/font><\/font><\/h2>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">The Work Item Tracking Custom Controls are intended to enable the following capabilities:<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Allow the use of new or existing Windows Form controls. This includes ActiveX controls wrapped as a Windows Form control.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Place controls on a <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem<\/font><\/u><\/span> Form using design layout constraints.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font face=\"Verdana\"><font size=\"2\">Allow a Control to be read and to write to a <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem<\/font><\/u><\/span> or <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItem<\/font><\/u><\/span> <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Client.Field<\/font><\/u><\/span>.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Allow a Control to read and write from external data sources.<\/p>\n<p><\/font><\/font><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">Restrictions of the Work Item Tracking Custom Controls<\/p>\n<p><\/font><\/font><\/h2>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">There are some restrictions for custom controls.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Multiple value fields are not directly supported. The use of a single field value as a holder of multiple values makes querying very difficult to do reliably.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Attachments do not have an update capability. The use of Custom Controls cannot overcome this limitation.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">The existing controls are not public and therefore cannot be extended.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">The binaries for each custom control must be installed on the client computer. There is no requirement for Admin rights to install custom control binaries.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">There is no provisioning system for custom control binaries in Visual Studio. Visual Studio<\/font><\/font><span class=\"Token\"><span> <\/span><\/span><font size=\"2\"><font face=\"Verdana\">assumes the binaries are already installed on the client computer.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Custom controls that are missing or are not configured correctly must not cause the client to crash. They must also provide enough information to troubleshoot the problem.<\/p>\n<p><\/font><\/font><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">Custom Control Implementations<span class=\"Bold\"><\/p>\n<p><\/span><\/font><\/font><\/h2>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">Custom Controls have the following rules:<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">They must derive from the <span class=\"CodeEntityReferenceQualified\"><u><font color=\"#0000ff\">T:System.Windows.Forms.Control<\/font><\/u><\/span> class<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">They must have a no-argument constructor<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">They must implement the <span class=\"CodeEntityReference\"><u><font color=\"#0000ff\">T:Microsoft.TeamFoundation.WorkItemTracking.Controls.IWorkItemControl<\/font><\/u><\/span> interface<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">As an option, they can implement the following interfaces:<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"TextIndented\"><font size=\"2\"><font color=\"#0000ff\"><u><font face=\"Verdana\"><span class=\"CodeEntityReference\">T:Microsoft.TeamFoundation.WorkItemTracking.Controls.IWorkItemClipboard<\/span><\/p>\n<p><\/font><\/u><\/font><\/font><\/p>\n<p class=\"TextIndented\"><font size=\"2\"><font color=\"#0000ff\"><u><font face=\"Verdana\"><span class=\"CodeEntityReference\">T:Microsoft.TeamFoundation.WorkItemTracking.Controls.IWorkItemUserAction<\/span><\/p>\n<p><\/font><\/u><\/font><\/font><\/p>\n<p class=\"TextIndented\"><u><font size=\"2\"><font color=\"#0000ff\"><font face=\"Verdana\"><span class=\"CodeEntityReference\">T:Microsoft.TeamFoundation.WorkItemTracking.Controls.IWorkItemToolTip<\/span><\/p>\n<p><\/font><\/font><\/font><\/u><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">See description\/comment a Work Item Type definition<\/p>\n<p><\/font><\/font><\/h2>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">In the Work Item Type definition Layout, each Control element has a Type attribute. The schema previously identified the following valid control types:<span>&nbsp;&nbsp; <\/span><\/p>\n<p><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\">&lt;xs:restriction base=&#8221;xs:string&#8221;&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;xs:enumeration value=&#8221;FieldControl&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;xs:enumeration value=&#8221;DateTimeControl&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;xs:enumeration value=&#8221;HtmlFieldControl&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;xs:enumeration value=&#8221;LinksControl&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;xs:enumeration value=&#8221;AttachmentsControl&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;xs:enumeration value=&#8221;WorkItemClassificationControl&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;xs:enumeration value=&#8221;WorkItemLogControl&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\">&lt;\/xs:restriction&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">This has been replaced with:<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\">&lt;xs:restriction base=&#8221;xs:string&#8221;&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp;&nbsp;&nbsp; <\/span>&lt;\/xs:restriction&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Verdana\" size=\"2\">This allows any name to be used. The built-in Types are still permitted. However, the use of a Type that does not match a built-in Type will infer the use of a Custom Control. This reference must not be to a specific DLL or Control. The reference is used as a name to look up an assembly manifest file on the client. For more information on assembly manifests see the topic, Assembly Manifests, on MSDN (<\/font><a href=\"http:\/\/go.microsoft.com\/fwlink\/?LinkId=74355\"><font face=\"Verdana\" size=\"2\">http:\/\/go.microsoft.com\/fwlink\/?LinkId=74355<\/font><\/a><font size=\"2\"><font face=\"Verdana\">).<\/p>\n<p><\/font><\/font><\/p>\n<h3><font size=\"5\"><font color=\"#c0c0c0\"><font face=\"Verdana\">Example<\/p>\n<p><\/font><\/font><\/font><\/h3>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\">&lt;Control Type=&#8221;WorkItemIdReference&#8221; FieldName=&#8221;MyFields.DuplicateId&#8221;<span>&nbsp; <\/span>Label=&#8221;&amp;amp;Duplicate Id:&#8221; LabelPosition=&#8221;Left&#8221; \/&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">Work Item Custom Control (.wicc) Files<\/p>\n<p><\/font><\/font><\/h2>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">Use the value for the Control Type to identify the Work Item Custom Control (WICC) manifest file. The WICC file uses a naming convention of &lt;Control Type&gt;.wicc. It is located on the client computer in the following search path:<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"TableSpacing\"><a class=\"\" title=\"ddue_InsertableRange\" name=\"ddue_InsertableRange\"><\/a><\/p>\n<p><font face=\"Verdana\" color=\"#c0c0c0\" size=\"1\">&nbsp;<\/font><\/p>\n<\/p>\n<table class=\"DefinitionTable\" cellspacing=\"0\" cellpadding=\"0\" border=\"1\">\n<tbody>\n<tr>\n<td class=\"\" valign=\"top\" width=\"305\">\n<p class=\"MsoNormal\"><span><b><font size=\"2\"><font face=\"Verdana\">Term<\/p>\n<p><\/font><\/font><\/b><\/span><\/p>\n<\/td>\n<p><span><font face=\"Verdana\" size=\"2\"><\/font><\/span><\/p>\n<td class=\"\" valign=\"top\" width=\"305\">\n<p class=\"MsoNormal\"><span><b><font size=\"2\"><font face=\"Verdana\">Definition<\/p>\n<p><\/font><\/font><\/b><\/span><\/p>\n<\/td>\n<p><span><font face=\"Verdana\" size=\"2\"><\/font><\/span><\/tr>\n<tr>\n<td class=\"\" valign=\"top\" width=\"305\">\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Verdana\">Environment.SpecialFolder.LocalApplicationData<\/p>\n<p><\/font><\/font><\/span><\/p>\n<\/td>\n<p><span><font face=\"Verdana\" size=\"2\"><\/font><\/span><\/p>\n<td class=\"\" valign=\"top\" width=\"305\">\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Verdana\">User-specific Path<\/p>\n<p><\/font><\/font><\/span><\/p>\n<\/td>\n<p><span><font face=\"Verdana\" size=\"2\"><\/font><\/span><\/tr>\n<tr>\n<td class=\"\" valign=\"top\" width=\"305\">\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Verdana\">Environment.SpecialFolder.CommonApplicationData folder<\/p>\n<p><\/font><\/font><\/span><\/p>\n<\/td>\n<p><span><font face=\"Verdana\" size=\"2\"><\/font><\/span><\/p>\n<td class=\"\" valign=\"top\" width=\"305\">\n<p class=\"MsoNormal\"><span><font size=\"2\"><font face=\"Verdana\">All Users<\/p>\n<p><\/font><\/font><\/span><\/p>\n<\/td>\n<p><span><font face=\"Verdana\" size=\"2\"><\/font><\/span><\/tr>\n<\/tbody>\n<\/table>\n<p class=\"TableSpacing\"><span><\/p>\n<p><font face=\"Verdana\" color=\"#c0c0c0\" size=\"1\">&nbsp;<\/font><\/p>\n<p><\/span><\/p>\n<p><span><\/span><\/p>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">This manifest contains the following information:<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Assembly <\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">FullClassName<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">Here is an example:<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\">&lt;?xml version=&#8221;1.0&#8243;?&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\">&lt;CustomControl xmlns:xsi=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema-instance&#8221; xmlns:xsd=&#8221;http:\/\/www.w3.org\/2001\/XMLSchema&#8221;&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp; <\/span>&lt;Assembly&gt;WitCustomControlSample.dll&lt;\/Assembly&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\"><span>&nbsp; <\/span>&lt;FullClassName&gt;WitCustomControlSample.WorkItemIdReference&lt;\/FullClassName&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"Code\"><font size=\"2\"><font color=\"#000080\"><font face=\"Courier New\">&lt;\/CustomControl&gt;<\/p>\n<p><\/font><\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"2\"><font face=\"Verdana\">Use the Assembly element to locate and load the assembly. This value can be either the relative path of the location of the assembly file or the absolute path of the location of the assembly file.<\/p>\n<p><\/font><\/font><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">Additional Notes<\/p>\n<p><\/font><\/font><\/h2>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">If you cannot find the control, or if some other error occurs, you will see a red, read-only error message. This message is substituted for the control itself.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Custom validation rules cannot be enforced in other client environments, such as <\/font><span class=\"Token\"><span><em><font face=\"Courier New\" color=\"#000080\">Microsoft Excel <\/font><\/em><\/span><\/span><font face=\"Verdana\">and <\/font><span class=\"Token\"><span><em><font face=\"Courier New\" color=\"#000080\">Microsoft Project<\/font><\/em><\/span><\/span><font face=\"Verdana\">. Use these rules carefully.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">Validation rules cause the existing controls to change color when they are invalid. The colors are not customizable. Therefore, new controls should use standard colors to remain consistent.<\/p>\n<p><\/font><\/font><\/p>\n<p class=\"BulletedList1\"><span><span><font size=\"2\">&middot;<\/font><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span><font size=\"2\"><font face=\"Verdana\">The Work Item Object Model is updated on every change to a control. Custom control implementations must set the dirty flag correctly in the Object Model so that changes in the custom control will be saved.<\/p>\n<p><\/font><\/font><\/p>\n<h2><font color=\"#808080\"><font face=\"Verdana\">See Also<\/font><\/font><\/h2>\n<\/h2>\n","protected":false},"excerpt":{"rendered":"<p>Work Item Tracking Custom Controls Note: This is draft documentation for the Team Foundation Server SP1 Beta. The contents of this article should not be considered as final.&nbsp; All feedback is welcome. Introduction The Work Item Tracking Custom Controls mechanism provides a standard way to enhance T:Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItems to include enhanced user-interface capabilities, extended event-based rules, [&hellip;]<\/p>\n","protected":false},"author":125,"featured_media":45953,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-7313","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-devops"],"acf":[],"blog_post_summary":"<p>Work Item Tracking Custom Controls Note: This is draft documentation for the Team Foundation Server SP1 Beta. The contents of this article should not be considered as final.&nbsp; All feedback is welcome. Introduction The Work Item Tracking Custom Controls mechanism provides a standard way to enhance T:Microsoft.TeamFoundation.WorkItemTracking.Client.WorkItems to include enhanced user-interface capabilities, extended event-based rules, [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/7313","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/users\/125"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/comments?post=7313"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/posts\/7313\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media\/45953"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/media?parent=7313"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/categories?post=7313"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/devops\/wp-json\/wp\/v2\/tags?post=7313"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}