このトピックでは、DataTemplateSelector および HierarchicalDataTemplate クラスを使用した高度な連結シナリオについて説明します。
Visual Studio の[ファイル]メニューから、[新規作成]を選択し、[プロジェクト]を選択します。
[新しいプロジェクト]ダイアログボックスで、左側のメニューから言語を選択します。[フレームワーク]ドロップダウンリストで[.NET Framework 4]を選択し、プロジェクトの名前として「OrgChart」と入力します。
ソリューションエクスプローラで、プロジェクト名を右クリックし、[参照の追加]を選択します。[参照の追加]ダイアログボックスで、以下のアセンブリを見つけて選択し、[OK]をクリックしてプロジェクトに参照を追加します。
C1.WPF および C1.WPF.OrgChart
C1.Silverlight および C1.Silverlight.OrgChart
xmlns:c1="http://schemas.componentone.com/winfx/2006/xaml" 名前空間を <Window> タグの名前空間宣言に追加します。これは、ほとんどの ComponentOne WPF コントロールで機能する一般的な名前空間です。
次の XAML マークアップを名前空間宣言の下に追加して、データテンプレートを作成します。
| XAML |
コードのコピー
|
|---|---|
<UserControl.Resources>
<!-- Team オブジェクト用のテンプレート -->
<DataTemplate x:Key="TeamTemplate" >
<Border Background="LightBlue" Padding="4" >
<TextBlock FontStyle="Italic" Text="{Binding Path=Name}" />
</Border>
</DataTemplate>
<!-- Division オブジェクト用のテンプレート -->
<sdk:HierarchicalDataTemplate x:Key="DivisionTemplate"
ItemsSource="{Binding Path=Teams}"
ItemTemplate="{StaticResource TeamTemplate}">
<Border Background="Gold" >
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold" HorizontalAlignment="Center"
VerticalAlignment="Center" Padding="20" />
</Border>
</sdk:HierarchicalDataTemplate>
<!-- League オブジェクト用のテンプレート -->
<sdk:HierarchicalDataTemplate x:Key="LeagueTemplate"
ItemsSource="{Binding Path=Divisions}"
ItemTemplate="{StaticResource DivisionTemplate}">
<Border Background="LightCoral" >
<TextBlock Text="{Binding Path=Name}" FontWeight="Bold" HorizontalAlignment="Center"
VerticalAlignment="Center" Padding="40" />
</Border>
</sdk:HierarchicalDataTemplate>
</UserControl.Resources>
|
|
次の XAML マークアップを挿入して、グリッドレイアウト、C1OrgChart コントロール、および ScrollViewer コントロールを作成します。
| XAML |
コードのコピー
|
|---|---|
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="118*" />
<RowDefinition Height="158*" />
</Grid.RowDefinitions>
<!--サンプルタイトル -->
<StackPanel Orientation="Horizontal" >
<TextBlock Text="C1OrgChart: HierarchicalDataTemplate" FontSize="16" VerticalAlignment="Bottom" />
<TextBlock Name="_tbTotal" VerticalAlignment="Bottom" />
</StackPanel>
<ScrollViewer Grid.Row="1" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto" Padding="0" >
<c1:C1OrgChart
Name="_chart" ItemTemplate="{StaticResource LeagueTemplate}"
ConnectorDashArray="1 2" ConnectorStroke="Gray"
HorizontalAlignment="Center" VerticalAlignment="Center" />
</ScrollViewer>
|
|
ツールボックスで通常の TreeView コントロールを見つけ、アプリケーションの <ScrollViewer> </ScrollViewer> タグの下に追加します。<sdk:TreeView> タグに次のコードを挿入します。
Name="_tree" Grid.Row="2" ItemTemplate="{StaticResource LeagueTemplate}"
アプリケーションを右クリックしてコードビューに切り替え、リストから[コードの表示]を選択します。
InitializeComponent() メソッドのすぐ下に、次のコードを追加します。
次のコードを挿入して、C1OrgChart と TreeView コントロールに表示されるチーム、リーグ、地区を作成します。
次のコードを追加して、チーム、地区、およびリーグの値を取得または設定するパブリッククラスを作成します。
アプリケーションを実行します。アプリケーションは次の図のようになります。
