2

Visual Studio2010rcのスタートページの最近のアイテムをカスタマイズしてみてください。私が考えていることについては、データソース/データバインディングをカスタマイズする必要がありますが、情報がどこから来ているのかわかりません。

<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にバインドされているようですが、それはどこから来ているのですか?

4

1 に答える 1

0

これに関する実際のドキュメントは見つかりませんでした。VS Docsについてはご存知だと思いますが、表面を傷つけることすらありません。

バインディングで使用されるRecentProjectsプロパティがあるため、そのようなプロパティを公開するタイプが必要です(またはICustomTypeDescriptorの実装。MSDNMagazineを参照してください。TeamFoundationClientSupportedの「プロパティ」にもバインディングがあります。

Microsoft.VisualStudio.Shell.UI.InternalというクラスのTeamFoundationClientSupportedというプロパティを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と呼ばれる「組み込みプロパティを追加」します...

このメソッドの実装を見ると、プロパティ名(最初のパラメーター)に基づくキーと2番目のパラメーターである値を持つ単純な辞書が示されています。このディクショナリは、Microsoft.Internal.VisualStudio.PlatformUI.UIDataSourceのEnumPropertiesというメソッドによって使用されます。一連の使用を経て、ICustomTypeDescriptorを実装するMicrosoft.Internal.VisualStudio.PlatformUI.DataSource(Microsoft.VisualStudio.Shell.10.0内)というクラスに到達します。したがって、バインディングシステムによってプロパティがどのように検出されるかを説明します。DataSourceタイプ記述子がStartPageDataSourceクラスにどのようにリンクされているかはわかりませんが、少なくとも、StartPageDataSourceコンストラクターでサポートされているプロパティのリストを知ることができます。

于 2010-03-25T00:51:03.060 に答える