このトピックでは、DataTemplateSelector および HierarchicalDataTemplate クラスを使用した高度な連結シナリオについて説明します。このトピックは、Windows ストアアプリケーションが作成されており、アプリケーションに適切な参照が追加されていることを前提とします。
XAML でマークアップの書き方
マークアップ |
コードのコピー
|
---|---|
<Page.Resources> <!-- Team オブジェクト用のテンプレート --> <DataTemplate x:Key="TeamTemplate" > <Border Background="LightBlue" Padding="4" > <TextBlock FontStyle="Italic" Text="{Binding Name}" /> </Border> </DataTemplate> <!-- Division オブジェクト用のテンプレート --> <Xaml:C1HierarchicalDataTemplate x:Key="DivisionTemplate" ItemTemplate="{StaticResource TeamTemplate}" ItemsSource="{Binding Teams}"> <DataTemplate> <Border Background="Gold" > <TextBlock Text="{Binding Name}" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="20" /> </Border> </DataTemplate> </Xaml:C1HierarchicalDataTemplate > <!-- League オブジェクト用のテンプレート --> <Xaml:C1HierarchicalDataTemplate x:Key="LeagueTemplate" ItemTemplate="{StaticResource DivisionTemplate}" ItemsSource="{Binding Divisions}"> <DataTemplate> <Border Background="LightCoral" > <TextBlock Text="{Binding Name}" FontWeight="Bold" HorizontalAlignment="Center" VerticalAlignment="Center" Padding="40" /> </Border> </DataTemplate> </Xaml:C1HierarchicalDataTemplate > </Page.Resources> |
XAML でマークアップの書き方
マークアップ |
コードのコピー
|
---|---|
|
<ScrollViewer>
</ScrollViewer>
タグの下に追加します。<Xaml:C1TreeView>
タグに次のコードを挿入します。
コードのコピー
|
|
---|---|
Name="_tree" Grid.Row="2" ItemTemplate="{StaticResource LeagueTemplate}" |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Imports C1.Xaml.OrgChart |
C# コードの書き方
C# |
コードのコピー
|
---|---|
using C1.Xaml.OrgChart; |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
' データオブジェクトを作成します Dim league__1 = League.GetLeague() ' それを C1OrgChart で表示します _chart.Header = league__1 ' 次のコードでも同じです '_chart.ItemsSource = new object[] { league }; ' それを TreeView で表示します _tree.ItemsSource = New Object() {league__1} |
C# コードの書き方
C# |
コードのコピー
|
---|---|
// データオブジェクトを作成します var league = League.GetLeague(); // それを C1OrgChart で表示します _chart.Header = league; // 次のコードでも同じです // _chart.ItemsSource = new object[] { league }; // それを TreeView で表示します _tree.ItemsSource = new object[] { league }; |
C# コードの書き方
C# |
コードのコピー
|
---|---|
public class League { public string Name { get; set; } public List<Division> Divisions { get; set; } public static League GetLeague() { var league = new League(); league.Name = "主要リーグ"; league.Divisions = new List<Division>(); foreach (var div in "北部,南部,東部,西部".Split(',')) { var d = new Division(); league.Divisions.Add(d); d.Name = div; d.Teams = new List<Team>(); foreach (var team in "第1地区,第2地区,第3地区,第4地区".Split(',')) { var t = new Team(); d.Teams.Add(t); t.Name = string.Format("{0} {1}", team, div); } } return league; } } |
Visual Basic コードの書き方
Visual Basic |
コードのコピー
|
---|---|
Public Class League Public Property Name() As String Get Return m_Name End Get Set(value As String) m_Name = Value End Set End Property Private m_Name As String Public Property Divisions() As List(Of Division) Get Return m_Divisions End Get Set(value As List(Of Division)) m_Divisions = Value End Set End Property Private m_Divisions As List(Of Division) Public Shared Function GetLeague() As League Dim league = New League() league.Name = "主要リーグ" league.Divisions = New List(Of Division)() For Each div In "North,South,East,West".Split(","c) Dim d = New Division() league.Divisions.Add(d) d.Name = div d.Teams = New List(Of Team)() For Each team In "t1,t2,t3,t4".Split(","c) Dim t = New Team() d.Teams.Add(t) t.Name = String.Format("{0} {1}", team, div) Next Next Return league End Function End Class |
C# コードの書き方
C# |
コードのコピー
|
---|---|
public class Division { public string Name { get; set; } public List<Team> Teams { get; set; } } public class Team { public string Name { get; set; } } } |