語義縮放讓使用者以捏合手勢在「詳細檢視」與「概覽檢視」間切換,是大量資料導航的核心交互模式。SemanticZoom 控件封裝此邏輯,支援自訂兩種檢視的外觀與行為。



<SemanticZoom x:Name="semanticZoom">
<SemanticZoom.ZoomedInView>
<!-- 詳細檢視:完整資料列表 -->
<GridView x:Name="zoomedInGridView"
ItemsSource="{Binding Source={StaticResource cvs}}"
ItemTemplate="{StaticResource StandardItemTemplate}"
GroupStyle="{StaticResource GroupStyle}" />
</SemanticZoom.ZoomedInView>
<SemanticZoom.ZoomedOutView>
<!-- 概覽檢視:分類標題網格 -->
<GridView x:Name="zoomedOutGridView"
ItemsSource="{Binding Source={StaticResource cvs}, Path=CollectionGroups}"
ItemTemplate="{StaticResource ZoomedOutItemTemplate}" />
</SemanticZoom.ZoomedOutView>
</SemanticZoom>

var cvs = new CollectionViewSource();
cvs.IsSourceGrouped = true;
cvs.Source = GetGroupedData(); // 必須回傳分組集合
this.Resources["cvs"] = cvs;
<DataTemplate x:Key="ZoomedOutItemTemplate">
<Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}"
Width="200" Height="80">
<TextBlock Text="{Binding Group.Name}"
FontSize="18" FontWeight="Bold"
VerticalAlignment="Center" HorizontalAlignment="Center" />
</Border>
</DataTemplate>
SemanticZoom 會自動同步兩個檢視的捲動位置與選取群組。點擊概覽檢視的群組標題,詳細檢視會自動捲動至該群組。

語義縮放是觸控優先介面的標誌性交互。下一章將介紹搜尋合約,實現系統級搜尋整合。