C#/XAML を使用して Windows ストア アプリの開発に取り組んでいます。私は主に iOS の経験があり、Android アプリの開発はある程度経験していますが、C#/XAML の世界にはまだ慣れていません。
これがGridViewベースのページでの私の問題です(VS2012が生成する素敵なテンプレートに基づいています)。
グリッドビューがあり、そのコレクションはネットワークから取得したデータにバインドされており、正常に動作します。しかし、データに応じてグリッド項目を変更したい。例: さまざまなグリッド ビュー アイテムを使用して表示したいファイルとフォルダーがあります。
私の質問: データに応じて ItemTemplate に異なる DataTemplate を使用するにはどうすればよいですか? たとえば、「フォルダー」の場合、垂直方向に中央揃えのテキストブロックが 1 つだけあり、ファイルの場合、2 つのテキストブロックがあり、視覚的に異なります。
私は正しい道を進んでいますか、それともまったく違う道を歩むべきですか?
XAML 部分は
<GridView
x:Name="itemGridView"
AutomationProperties.AutomationId="ItemGridView"
AutomationProperties.Name="Grouped Items"
Grid.RowSpan="3"
Padding="116,137,40,46"
ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
ItemTemplate="{StaticResource FileEntriesTemplate}"
ItemClick="ItemView_ItemClick"
IsItemClickEnabled="True"
SelectionMode="None"
IsSwipeEnabled="false">
テンプレートは
<DataTemplate x:Key="FileEntriesTemplate">
<Grid HorizontalAlignment="Left" Width="400" Height="80" Background="Beige">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image Source="{Binding Image}" Stretch="Uniform" Grid.Column="0" Margin="10,0,0,0" AutomationProperties.Name="{Binding Title}"/>
<StackPanel Orientation="Vertical" Grid.Column="1" Background="Transparent">
<TextBlock Text="{Binding Title}" Foreground="Black" Style="{StaticResource LargeTitleTextStyle}" Margin="20,20,10,0"/>
<TextBlock Text="{Binding Subtitle}" Foreground="gray" Style="{StaticResource CaptionTextStyle}" TextWrapping="NoWrap" Margin="20,10,0,30"/>
</StackPanel>
</Grid>