我正在尝试开发Visual Studio 2013 Team Foundation Server扩展程序。
我想打开" Find shelvesets"某个用户的页面,但我无法找到方法。
我试图使用以下代码:
ITeamExplorer teamExplorer = (ITeamExplorer)ServiceProvider.GetService(typeof(ITeamExplorer));
if (teamExplorer != null)
{
teamExplorer.NavigateToPage(new Guid(TeamExplorerPageIds.FindShelvesets), null);
}
这将打开FindShelvesets页面,但它会显示当前用户的搁置集。我想让它显示另一个用户的搁置集,我可以通过参数传递它。
NavigateToPage方法接受一个GUID参数,该参数指定将要打开的页面,它还接受一个上下文参数,该参数是该页面的上下文。
我假设我可以传递一个对象作为第二个参数,它可以覆盖FindShelvesets页面的默认用户。问题是我不知道该对象应该是什么,而且我找不到任何可以帮助我的文档。我尝试传递一个包含另一个用户名字的字符串,但是没有用。
所以问题是,我如何导航到任意用户的FindShelvesets页面。另外,在哪里可以找到关于不同团队资源管理器页面可以接受哪些上下文的文档?
答案 0 :(得分:0)
深入研究' Microsoft.TeamFoundation.VersionControl.Controls '程序集时,特别是' Microsoft.TeamFoundation.VersionControl.Controls.FindShelvesets.FindShelvesetsPage.InitializeModel(PageInitializeEventArgs e)'方法,你会看到他们使用名为' FindShelvesetsModelContext '的内部类作为上下文/参数(参见my blog post about this one and others)..并且因为它是内部的,你无法真正提供它“从外面”,除非你使用反射 - 如果绝对需要,这可能是你唯一的选择..但显然是一个非常可怕和不稳定/不可靠的。