Как настроить 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.