Windows 8实用窍门系列:22.Windows 8 的SemanticZoom缩放视图

2023-12-26 07:20

本文主要是介绍Windows 8实用窍门系列:22.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>
复制代码

    3.设置后台数据源和关联ZoomedOutView视图数据

复制代码
        public MainPage(){this.InitializeComponent();this.itemcollectSource.Source = new ViewModelData().Sourcedata;//此处需要将ZoomedOutView的视图数据结合关联ZoomedInView的集合组(semanticZoom.ZoomedOutView as ListViewBase).ItemsSource = itemcollectSource.View.CollectionGroups;}
复制代码

  三.我们看效果图如下,如需源码请点击 win8Gridview3.rar 下载。

    ZoomedOutView效果图

    ZoomedInView效果图




本文转自程兴亮博客园博客,原文链接:http://www.cnblogs.com/chengxingliang/archive/2013/05/06/2991534.html,如需转载请自行联系原作者

这篇关于Windows 8实用窍门系列:22.Windows 8 的SemanticZoom缩放视图的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/538539

相关文章

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Windows命令之tasklist命令用法详解(Windows查看进程)

《Windows命令之tasklist命令用法详解(Windows查看进程)》tasklist命令显示本地计算机或远程计算机上当前正在运行的进程列表,命令结合筛选器一起使用,可以按照我们的需求进行过滤... 目录命令帮助1、基本使用2、执行原理2.1、tasklist命令无法使用3、筛选器3.1、根据PID

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

Windows server服务器使用blat命令行发送邮件

《Windowsserver服务器使用blat命令行发送邮件》在linux平台的命令行下可以使用mail命令来发送邮件,windows平台没有内置的命令,但可以使用开源的blat,其官方主页为ht... 目录下载blatBAT命令行示例备注总结在linux平台的命令行下可以使用mail命令来发送邮件,Win

Windows环境下安装达梦数据库的完整步骤

《Windows环境下安装达梦数据库的完整步骤》达梦数据库的安装大致分为Windows和Linux版本,本文将以dm8企业版Windows_64位环境为例,为大家介绍一下达梦数据库的具体安装步骤吧... 目录环境介绍1 下载解压安装包2 根据安装手册安装2.1 选择语言 时区2.2 安装向导2.3 接受协议

jdk21下载、安装详细教程(Windows、Linux、macOS)

《jdk21下载、安装详细教程(Windows、Linux、macOS)》本文介绍了OpenJDK21的下载地址和安装步骤,包括Windows、Linux和macOS平台,下载后解压并设置环境变量,最... 目录1、官网2、下载openjdk3、安装4、验证1、官网官网地址:OpenJDK下载地址:Ar

Windows设置nginx启动端口的方法

《Windows设置nginx启动端口的方法》在服务器配置与开发过程中,nginx作为一款高效的HTTP和反向代理服务器,被广泛应用,而在Windows系统中,合理设置nginx的启动端口,是确保其正... 目录一、为什么要设置 nginx 启动端口二、设置步骤三、常见问题及解决一、为什么要设置 nginx

在 Windows 上安装 DeepSeek 的完整指南(最新推荐)

《在Windows上安装DeepSeek的完整指南(最新推荐)》在Windows上安装DeepSeek的完整指南,包括下载和安装Ollama、下载DeepSeekRXNUMX模型、运行Deep... 目录在www.chinasem.cn Windows 上安装 DeepSeek 的完整指南步骤 1:下载并安装

Python将大量遥感数据的值缩放指定倍数的方法(推荐)

《Python将大量遥感数据的值缩放指定倍数的方法(推荐)》本文介绍基于Python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处理,并将所得处理后数据保存为新的遥感影像... 本文介绍基于python中的gdal模块,批量读取大量多波段遥感影像文件,分别对各波段数据加以数值处

基于WinForm+Halcon实现图像缩放与交互功能

《基于WinForm+Halcon实现图像缩放与交互功能》本文主要讲述在WinForm中结合Halcon实现图像缩放、平移及实时显示灰度值等交互功能,包括初始化窗口的不同方式,以及通过特定事件添加相应... 目录前言初始化窗口添加图像缩放功能添加图像平移功能添加实时显示灰度值功能示例代码总结最后前言本文将