Как настроить Visual Studio 2010 RC StartPage последних проектов

Я хотел бы поэкспериментировать с настройкой последних элементов стартовой страницы visual studio 2010 rc. Для того, что я имею в виду, мне нужно настроить привязку источника данных / данных, но я не могу найти источник информации.

<ScrollViewer Grid.Row="1" HorizontalAlignment="Stretch" 
    Style="{DynamicResource StartPage.ScrollViewerStyle}" 
    VerticalAlignment="Stretch"  VerticalScrollBarVisibility="Auto">
    <sp:MruListBox 
        DataContext="{Binding Path=RecentProjects}" 
        ItemsSource="{Binding Path=Items}"
        Background="Transparent"
        BorderThickness="0"
        AutomationProperties.AutomationId="MruList"/>
</ScrollViewer>

Может кто-то указать мне верное направление? Я вижу, что это привязка к RecentProjects, но откуда это?

1 ответ

Решение

Я не смог найти никакой реальной документации по этому поводу. Я думаю, вы знали о VS Docs, но он даже не царапает поверхность.

Поскольку в привязке используется свойство RecentProjects, должен существовать тип, представляющий такое свойство (или реализацию ICustomTypeDescriptor, см. Журнал MSDN). Существует также привязка к "свойству" 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.

Другие вопросы по тегам