Windows 8开发入门(二十二) Windows 8 的SemanticZoom缩放视图

在Windows 8中SemanticZoom缩放视图支持对GridView和ListView控件的视图效果进行缩放,它提供一个详 细信息视图(ZoomedInView)以让用户查看详细信息,另外提供一个缩小索引视图(ZoomedOutView)让用户快速 定位想要查看信息的大概范围。

一.想要实现这种效果我们需要使用SemanticZoom控件和 CollectionViewSource控件配合使用:

SemanticZoom控件:

<SemanticZoom.ZoomedOutView>
       <!--此处填充缩小索引视图的GridView,一般情况下绑定Group.Title-->
    </SemanticZoom.ZoomedOutView>
    <SemanticZoom.ZoomedInView>
        <!--此处填充平常普通的GridView,显示详细信息-->
    </SemanticZoom.ZoomedInView>

CollectionViewSource是一个和前台UI控件进行互动的 集合源。

Source:源数据绑定属性

IsSourceGrouped:是否允许分组

View:获取当前与 CollectionViewSource 的此实例关联的视图对象

View.CollectionGroups:返回该视图关联的所有集 合组。

二.现在通过一个实例来看如何使用SemanticZoom实现缩放视图,本实例接前一篇文章实例。

1.前台设置CollectionViewSource控件

<Grid.Resources>
            <CollectionViewSource x:Name="itemcollectSource" IsSourceGrouped="true" 

ItemsPath="ItemContent" />
        </Grid.Resources>

2.前台绘制ZoomedInView视图和ZoomedOutView视图 GridView

<SemanticZoom x:Name="semanticZoom" VerticalAlignment="Center">
            <SemanticZoom.ZoomedOutView>
                <GridView ScrollViewer.IsHorizontalScrollChainingEnabled="False" >
                    <GridView.ItemTemplate>
                        <DataTemplate>
                            <!--注意此处绑定的是实体集的GroupTitle属性-->
                            <TextBlock Text="{Binding Group.GroupTitle}" FontSize="24"/>
                        </DataTemplate>
                    </GridView.ItemTemplate>
                    <GridView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <WrapGrid ItemWidth="150" ItemHeight="75" MaximumRowsOrColumns="1" VerticalChildrenAlignment="Center" />
                        </ItemsPanelTemplate>
                    </GridView.ItemsPanel>
                    <GridView.ItemContainerStyle>
                        <Style TargetType="GridViewItem">
                            <Setter Property="Margin" Value="4" />
                            <Setter Property="Padding" Value="10" />
                            <Setter Property="BorderBrush" Value="Gray" />
                            <Setter Property="BorderThickness" Value="1" />
                            <Setter Property="HorizontalContentAlignment" Value="Center" />
                            <Setter Property="VerticalContentAlignment" Value="Center" />
                        </Style>
                    </GridView.ItemContainerStyle>
                </GridView>
            </SemanticZoom.ZoomedOutView>
            <SemanticZoom.ZoomedInView>
                <!--设置ScrollViewer.IsHorizontalScrollChainingEnabled="False"-->
                <GridView Name="gv_Item" ItemsSource="{Binding Source={StaticResource itemcollectSource}}"
                  SelectedItem="{Binding ItemContent, Mode=TwoWay}" ScrollViewer.IsHorizontalScrollChainingEnabled="False"
                  Margin="20,140,40,20"  IsSwipeEnabled="True"  >
                    <GridView.ItemTemplate>
                        <DataTemplate>
                            <Grid Width="250" Height="200" Background="#33CCCCCC">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="110"></ColumnDefinition>
                                    <ColumnDefinition></ColumnDefinition>
                                </Grid.ColumnDefinitions>
                                <Image Grid.Column="0" Margin="5,0,0,0" Source="{Binding ImageUrl}" Stretch="None"></Image>
                                <TextBlock Grid.Column="1" Margin="15,15,0,0" Foreground="Black" Text="{Binding txtTitle}"
                                    FontWeight="Bold" FontSize="16" TextWrapping="Wrap"/>
                                <TextBlock Grid.Column="1" Margin="15,40,0,0" Foreground="Black" Text="{Binding txtContent}"
                                    FontWeight="Light" FontSize="14" TextWrapping="Wrap"/>
                            </Grid>
                        </DataTemplate>
                    </GridView.ItemTemplate>
                    <GridView.ItemsPanel>
                        <ItemsPanelTemplate>
                            <VariableSizedWrapGrid Orientation="Vertical" MaximumRowsOrColumns="3" />
                        </ItemsPanelTemplate>
                    </GridView.ItemsPanel>
                    <GridView.GroupStyle>
                        <GroupStyle>
                            <GroupStyle.HeaderTemplate>
                                <DataTemplate>
                                    <Grid Margin="1,0,0,6">
                                        <Button AutomationProperties.Name="组名称" Content="{Binding GroupTitle}"/>
                                    </Grid>
                                </DataTemplate>
                            </GroupStyle.HeaderTemplate>
                            <GroupStyle.Panel>
                                <ItemsPanelTemplate>
                                    <VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,50,0"/>
                                </ItemsPanelTemplate>
                            </GroupStyle.Panel>
                        </GroupStyle>
                    </GridView.GroupStyle>
                </GridView>
            </SemanticZoom.ZoomedInView>
        </SemanticZoom>

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索windows
, 实例
, 控件
, 视图
, 前台
, 一个
GridView实例开发
zoom缩放、ie8使用zoom缩放问题、iscroll zoom.js 缩放、datazoom 缩放 echart、ie zoom 缩放,以便于您获取更多的相关知识。

时间: 2024-10-31 02:35:48

Windows 8开发入门(二十二) Windows 8 的SemanticZoom缩放视图的相关文章

Windows 8开发入门(十二) windows 8的文件管理 1

File创建和String Stream Buffer方式读写 在本文中我们将学习Windows 8中的文件创建和多种读写方式以及设置文档库访问权限和文件类型的访问. 当然我们需要做以下准备工作: 首先:设置程序允许访问的文件位置为:"库\文档",设置方法:点击"Package.appxmanifest ",然后选择"功能"选项卡,在功能列表中勾选"文档库访问".如下图: 开发入门(十二) windows 8的文件管理 1-w

UWP开发入门(十二)——神器Live Visual Tree

原文:UWP开发入门(十二)--神器Live Visual Tree 很久以前,我们就有Snoop这样的工具实时修改.查看正在运行的WPF程序,那时候调个样式,修改个模板,相当滋润.随着历史的车轮陷进WP的泥潭中,无论WP7的Silverlight还是WP8.1的runtime,偶们都不能方便快捷的查看APP的可视化树(Visual Tree)了,呜呼哉,是可忍孰不可忍放下筷子就骂微软.没想到Visual Studio 2015倒是给了我们一个惊喜,自带了一套非常强大的调试工具Live Visu

Android开发入门(十二)列表控件 12.3 ListView的总结范例

使用一个例子,来总结一下ListView的基本使用. 1. 新建一个工程:ListViewDemo. 2. main.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_pare

Android开发入门(十二)列表控件 12.2 ListView的扩展功能

ListView是一个可以被深度扩展的视图.在做项目的时候,扩展ListView去显示数据是必不可免的.接下 来会展示如何在ListView中去选择多个物件,以及如何使用ListView的"过滤"功能. 1. 使用上一 节的工程:BasicViews5. 2. 在BasicViews5Activity.java中添加一些代码. String[] presidents; /** Called when the activity is first created. */ @Override

Android开发入门(十二)列表控件 12.1 ListView的基本使用

今天总结一下Android中的列表控件:ListView和Spinner. ListView可以垂直并可滑动地地显示 一些信息.下面阐述如何使用ListView显示一系列的信息. 1. 创建一个工程:BasicViews5. 2. strings.xml中的代码. <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">He

Windows 8开发入门(十九) Windows 8中的GridView使用(一)

在本文中我们将讲述初步使用GridView以展示各种信息. 首先我们看看GridView的重要属性: SelectionMode:设置选择模式(None,Single,Multiple) IsItemClickEnabled:是否允许有 选择项点击事件 ItemsSource:数据项的数据源 ItemTemplate:数据项的展示模板 SelectedItem:选择项的内容 然后我们看看如何使用GridView. 1.首先设置数据源实体 类以及数据源提供源. public class DataM

Windows 8开发入门(十五) Windows 8中的4种视图状态和锁屏通知

在Windows 8中的应用程序在默认打开时是全屏的,此时我们如果需要看其他应用程序就只能回到Metro 起 始页面重新选择其他程序吗?这样就会很麻烦,所以Windows 8应用程序有4种视图状态 (ApplicationViewState),类似于普通窗口程序的最小化.最大化一样可以看到其他应用程序同时允许多个应 用程序的使用. 视图状态切换方法:用鼠标点击屏幕最上方按住不放往右或者往左拖动.移动中间间 隔栏等等. ApplicationViewState: // 摘要: // 当前应用程序的

Kinect for Windows SDK开发入门(十六)面部追踪上

在前面一篇文章中,我们使用Emgu来识别人的脸部,当时的Kinect SDK版本是1.0,五月份发布1.5版本的SDK之后,我们就能够直接使用Kinect实现人脸识别,而不需要借助第三方类库. SDK1.5中新增了人脸识别类库:Microsoft.Kinect.Toolkit.FaceTracking使得在Kinect中进行人脸识别变得简单,该类库的源代码也在Developer Toolkit中.在Developer Toolkit中也自带人脸识别的例子,您也可以打开运行或者查看源代码. 开发入

Windows 8开发入门(六)Windows 8中的Popup使用方式

在上一篇文章中我们将了替代Silverlight中MessageBox的MessageDialog控件,本篇文章将讲诉另外一种弹 出提示窗口的控件Popup. 一.我们认识Popup控件的IsLightDismissEnabled属性,这个属性设置为 true的时候,点击非Popup控件外任何区域将关闭Popup. <Button Content="弹出窗口一" Name="btn1" Width="108" Margin="16

Windows 8开发入门(十三) windows 8的文件及文件夹管理 2

文件以及文件夹操作 在本文中我们将学习win 8中的文件以及文件夹的各种操作. 在本文中文件操作主要是讲述:删 除文件/移动文件/复制文件/重命名文件 文件夹操作分为:读取文件夹/创建文件夹/删除文件夹/重 命名文件夹 首先贴出所有的Xaml代码文件部分: <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <!--显示区--> <TextBlock Horizo