Expression Blend 3を使ってSilverlight 3でリッチなレイアウトを持ったアプリケーションを作成しよう
NetAdvantage Silverlightによるリッチなナビゲーションの作成
ダウンロード サンプルファイル (1.9 MB)
xamWebTileViewをページに追加し、データをバインド
ツールバーからアセットを選択すると、インストールされているコントロール並びにコントロールパーツの一覧が表示されます。[コントロール]-[Infragistics]カテゴリーを選択すると、NetAdvantage Silverlightコントロールの一覧が表示されます。一覧の中からxamWebTileViewを選択し、ページに追加します。その後、HorizontalAlignment、VerticalAlignmentをそれぞれ既定値であるStretchと設定します。
<UserControl
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:igTileView="clr-namespace:Infragistics.Silverlight.Controls;assembly=Infragistics.Silverlight.XamWebTileView.v9.1"
x:Class="NAXamTileView_CS.MainPage"
Width="640" Height="480">
<Grid x:Name="LayoutRoot" Background="White">
<igTileView:XamWebTileView/>
</Grid>
</UserControl>
次にItemsSourceプロパティの右側にあるチェックボックスをクリックし、[データバインド]を選択します。

データバインドの作成ダイアログが起動するのでバインドするデータを選択します。
正しくバインドが行われていると、図10のようにタイルが表示されます。ここまでのxamWebTileViewのXAMLは次のとおりです。
<Grid x:Name="LayoutRoot" Background="White"
DataContext="{Binding Source={StaticResource SampleDataSource}}">
<!--ItemsSource にデータ コンテキストの Collection を指定-->
<igTileView:XamWebTileView
ItemsSource="{Binding Collection, Mode=OneWay}"/>
</Grid>
このままですとタイルのヘッダー、コンテンツが文字のみとなってしまうので、それぞれのテンプレートを作成します。
xamWebTileViewのスタイリング・テンプレート作成
データをxamWebTileViewにバインドした場合はそれぞれのレコードがTilePaneとして作成されます。TilePaneの中でもヘッダーはTilePaneHeaderTemplate、コンテンツはTilePaneContentTemplateとして定義することができます。まずはxamWebTileView上でコンテキストメニューを表示し、[追加のテンプレート]-[TilePaneHeaderTemplate]-[空アイテムの作成]を選択します。
テンプレートのキーを[DataTemplate1]と設定し[OK]ボタンをクリックするとテンプレートの編集画面が表示されます。まず、テンプレートに予め設定されているGridをStackPanelと変更しOrientaionプロパティをHorizontalと設定します。StackPanelには続けてImage、TextBlockを追加します。ImageのWidth、Heightはそれぞれ30、TextBlockのVerticalAlignmentはCenterと設定します。ここまでで作成されたXAMLは次のとおりです。
<!--ヘッダー テンプレート-->
<DataTemplate x:Key="DataTemplate1">
<StackPanel Orientation="Horizontal">
<Image Height="30" Width="30"/>
<TextBlock VerticalAlignment="Center" Text="TextBlock" />
</StackPanel>
</DataTemplate>
次に、テンプレートに追加したImageのSourceプロパティに任意の画像ファイルを指定します。今回はあらかじめ追加していたImagesフォルダーの中から「User Edit64.png」を選択しました。また、TextBlockのTextプロパティにName列をデータバインドさせます。最終的なXAML並びにデザイン画面は次のとおりとなります。
<!--ヘッダー テンプレート-->
<DataTemplate x:Key="DataTemplate1">
<StackPanel Orientation="Horizontal">
<Image Height="30" Width="30" Source="Images/User Edit64.png"/>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}" />
</StackPanel>
</DataTemplate>

ヘッダー テンプレートの編集を終了し、先ほどと同様に[追加のテンプレートの編集]-[TilePaneContentTemplateの編集]-[空アイテムの作成]を選択します。キー名は「DataTemplate2」と設定します。このテンプレートでは実際にタイルに表示されるUIを構築します。GridのColumnDefinition、RowDefinitionを設定し、それぞれImageならびにTextBlockを配置します。また、配置したコントロールにて各列のデータを表示するようにデータバインディングを設定します。構築されたXAMLは次のとおりです。
<!--コンテンツ テンプレート-->
<DataTemplate x:Key="DataTemplate2">
<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" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="住所"
Grid.Row="2" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="会社名"
Grid.Row="3" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="E-mail"
Grid.Row="4" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="電話番号"
Grid.Row="5" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="{Binding Name}"
Grid.Row="1" Grid.Column="1" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="{Binding Address}"
Grid.Row="2" Grid.Column="1" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="{Binding CompanyName}"
Grid.Row="3" Grid.Column="1" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="{Binding Email}"
Grid.Row="4" Grid.Column="1" d:LayoutOverrides="Width"/>
<TextBlock VerticalAlignment="Center" Text="{Binding PhoneNumber}"
Grid.Row="5" Grid.Column="1" d:LayoutOverrides="Width"/>
</Grid>
</DataTemplate>
設定が完了したらプロジェクトを実行し、タイルのドラッグ&ドロップや選択による拡大、縮小が可能であることを確認してください。
この記事は参考になりましたか?
- Infragistics NetAdvantageチュートリアル連載記事一覧
- この記事の著者
-
インフラジスティックス・ジャパン株式会社 池原 大然(イケハラ ダイゼン)
国内ベンチャー企業にて.NETエンジニアとして開発に従事、2007年インフラジスティックス・ジャパンに入社。現在デベロッパー エバンジェリストとして、.NETやWPF/Silverlight製品や技術の啓蒙活動を行う。Microsoft MVP for Client App Dev 2010/04 ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社
この記事は参考になりましたか?
この記事をシェア





