Я не смог найти никакой реальной документации по этому поводу. Я думаю, вы знали о VS Docs , но это даже не царапает поверхность.
Поскольку в привязке используется свойство RecentProjects, должен существовать тип, представляющий такое свойство (или реализацию ICustomTypeDescriptor, см. MSDN Magazine ). Существует также привязка к «свойству» TeamFoundationClientSupported.
Я нашел свойство с именем TeamFoundationClientSupported в Microsoft.VisualStudio.Shell.UI.Internal в классе с именем Microsoft.VisualStudio.PlatformUI.StartPageDataSource, поэтому его нельзя использовать, как в привязке.
Конструктор этого класса содержит несколько таких строк:
base.AddBuiltInProperty(StartPageDataSourceSchema.CustomizationEnabledName, GetUserSetting(StartPageDataSourceSchema.CustomizationEnabledName, false));
...
base.AddBuiltInProperty(StartPageDataSourceSchema.TeamFoundationClientSupportedName, this.TeamFoundationClientSupported);
...
base.AddBuiltInProperty(StartPageDataSourceSchema.RecentProjectsDataSourceName, source3);
...
Последние 2 интересны: они «добавляют встроенное свойство» под названием TeamFoundationClientSupported и RecentProjects ...
При рассмотрении реализации этого метода показан простой словарь с ключом, основанным на имени свойства (первый параметр) и значением, являющимся вторым параметром. Этот словарь используется методом с именем EnumProperties в Microsoft.Internal.VisualStudio.PlatformUI.UIDataSource. Проходя через цепочку использования, мы приходим к классу Microsoft.Internal.VisualStudio.PlatformUI.DataSource (в Microsoft.VisualStudio.Shell.10.0), который реализует ICustomTypeDescriptor. Таким образом, это объясняет, как свойства обнаруживаются системой привязки. Я не нашел, как дескриптор типа DataSource связан с классом StartPageDataSource, но по крайней мере мы можем знать список поддерживаемых свойств в конструкторе StartPageDataSource.