このトピックでは、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 コントロールに表示されるチーム、リーグ、地区を作成します。
次のコードを追加して、チーム、地区、およびリーグの値を取得または設定するパブリッククラスを作成します。
アプリケーションを実行します。アプリケーションは次の図のようになります。