xamTilesControlのスタイリング・テンプレート作成
データをバインドした場合はそれぞれのレコードが [Tile] として作成されます。xamTilesControlにおいて以下のテンプレートを定義することで [Tile] の外観をカスタマイズ可能です。
今回はItemTemplate、ItemTemplateMaximized、ItemTemplateMinimizedExpandedを設定します。
テンプレート名 | 概要 |
ItemTemplate | 通常状態のテンプレート |
ItemTemplateMaximized | 最大化状態のテンプレート |
ItemTemplateMinimized | 最小化状態のテンプレート |
ItemTemplateMinimizedExpanded | 最小化時に展開ボタンが押された場合のテンプレート |
ItemHeaderTemplate | TilesPanelのヘッダーテンプレート |
テンプレートの設定
今回はPhoto、Nameを通常時に表示するようにするため、XamTilesControl.ItemTemplateを次のように設定します。
<igTiles:XamTilesControl.ItemTemplate> <!-通常のテンプレート --> <DataTemplate > <StackPanel Width="120" Height="100"> <Image Height="80" Width="80" Source="{Binding Photo}"/> <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding Name}" /> </StackPanel> </DataTemplate> </igTiles:XamTilesControl.ItemTemplate>
次に最大化表示させる場合のテンプレートは前回の記事のものをコピーし、xamTilesControl.ItemTemplateMaximizedを設定します。
<igTiles:XamTilesControl.ItemTemplateMaximized> <!--最大化時のテンプレート--> <DataTemplate > <Grid> <Grid.RowDefinitions> <RowDefinition Height="120"/> <RowDefinition Height="30"/> <RowDefinition Height="30"/> <RowDefinition Height="30"/> <RowDefinition Height="30"/> <RowDefinition Height="30"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="120"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Image Source="{Binding Photo}"/> <TextBlock VerticalAlignment="Center" Text="名前" Grid.Row="1" /> <TextBlock VerticalAlignment="Center" Text="住所" Grid.Row="2" /> <TextBlock VerticalAlignment="Center" Text="会社名" Grid.Row="3" /> <TextBlock VerticalAlignment="Center" Text="E-mail" Grid.Row="4" /> <TextBlock VerticalAlignment="Center" Text="電話番号" Grid.Row="5" /> <TextBlock VerticalAlignment="Center" Text="{Binding Name}" Grid.Row="1" Grid.Column="1" /> <TextBlock VerticalAlignment="Center" Text="{Binding Address}" Grid.Row="2" Grid.Column="1" /> <TextBlock VerticalAlignment="Center" Text="{Binding CompanyName}" Grid.Row="3" Grid.Column="1" /> <TextBlock VerticalAlignment="Center" Text="{Binding Email}" Grid.Row="4" Grid.Column="1" /> <TextBlock VerticalAlignment="Center" Text="{Binding PhoneNumber}" Grid.Row="5" Grid.Column="1" /> </Grid> </DataTemplate> </igTiles:XamTilesControl.ItemTemplateMaximized>
実行結果は図9のようになります。
現在、最小化時にタイルを展開できる機能が有効になっており、ここに電話番号並びに、E-mailアドレスを表示させるため、XamTilesControl.ItemTemplateMinimizedExpandedを定義します。
<igTiles:XamTilesControl.ItemTemplateMinimizedExpanded> <!-- 最小化かつ展開されている場合のテンプレート --> <DataTemplate> <StackPanel> <TextBlock Text="電話番号" /> <TextBlock Text="{Binding Path=PhoneNumber}" /> <TextBlock Text="Eメールアドレス" /> <TextBlock Text="{Binding Path=Email}" /> </StackPanel> </DataTemplate> </igTiles:XamTilesControl.ItemTemplateMinimizedExpanded>
最後に状態を問わず、名前を表示するためテンプレートではなく、XamTilesControl.HeaderPathを定義します。
<igTiles:XamTilesControl x:Name="xamTilesControl1" DataContext="{StaticResource SampleDataSource}" ItemsSource="{Binding Path=Collection}" HeaderPath="Name">