设为首页 收藏本站
查看: 2193|回复: 0

Win8中缩放视图(SemanticZoom控件)

[复制链接]

尚未签到

发表于 2015-5-21 11:34:33 | 显示全部楼层 |阅读模式
  1.首先来说一下SemanticZoom控件是什么?
  SemanticZoom控件可以让用户缩放具有相同内容的两个不同视图。其中有一个是主视图。另外一个视图可以让用户进行快速导航。例如,当用户查看地址簿时,用户可以放大某个字母以查看与该字母相关的内容。还有其他等等的一些例子。
  2.如何使用SemanticZoom控件
  SemanticZoom控件需要包含两个其它控件(GridView或ListView):一个控件提供放大视图,另外一个提供缩小视图。


DSC0000.gif DSC0001.gif View Code


        









  3.示例如下
一个省市关联。外视图为省份的列表。内部为城市列表的相关信息。
DSC0002.png
DSC0003.png 此为两个图的效果。
  接下来我们来看一下数据源。



            Province[] Pros = {
new Province{ProID=1,Name="山东省"},
new Province{ProID=2,Name="广东省"},
new Province{ProID=3,Name="湖北省"},
new Province{ProID=4,Name="广西省"}
};
////然后再添加几个省下面对应的城市的,随便来几个
City[] Citys = {
new City{CityID=11,ProID=1,CityName="威海市"},
new City{CityID=12,ProID=1,CityName="烟台市"},
new City{CityID=13,ProID=1,CityName="济南市"},
new City{CityID=21,ProID=2,CityName="广州市"},
new City{CityID=22,ProID=2,CityName="深圳市"},
new City{CityID=31,ProID=3,CityName="武汉市"},
new City{CityID=32,ProID=3,CityName="武昌市"},
new City{CityID=33,ProID=3,CityName="汉口市"},
new City{CityID=34,ProID=3,CityName="汉阳市"},
new City{CityID=35,ProID=3,CityName="宜昌市"},
new City{CityID=41,ProID=4,CityName="西宁市"},
new City{CityID=42,ProID=4,CityName="桂林市"}
};
  先准备数据,接下来通过linq将数据进行转换。



            // 将省份和城市进行关联,对数据源进行分组,此处用到linq   
var res = (from p in Pros
join c in Citys on p.ProID equals c.ProID
into g
select new
{
p.Name,
CityList=g.ToList()
}).ToList();
  4然后接下来要用到Windows.UI.Xaml.Data命名空间下的CollectionViewSource。
  CollectionViewSource是专为数据绑定有UI视图互动而设的,尤其是对于要实现分组的情况下,更需要它。CollectionViewSource的几个重要的属性:
  Source是设置分组后的数据源,数据源就是通过上面的Linq进行转换处理。
  IsSourceGrouped属性指示是否允许分组,我试过只有设置允许分组才能看到前面的截图效果。
  ItemsPath是分组后,组内部所包含列表的属性路径,即上面Linq中CityList.可以查看它的类型PropertyPath.
  View属性就是获取其视图数据.



            // 实例化CollectionViewSource对象   
CollectionViewSource cvs = new CollectionViewSource();
cvs.IsSourceGrouped = true; //支持分组   
// 分组后集合项的路径,本例中为CityList   
cvs.ItemsPath = new PropertyPath("CityList");
// 设置数据来源,就是我们刚才分好组的动态列表   
cvs.Source = res;
// 分别对两个视图进行绑定
gvList.ItemsSource = cvs.View.CollectionGroups;
lvlist.ItemsSource = cvs.View;
  这就是缩略视图绑定数据 其中gvList是GridView,绑定的是外部视图。lvlist是ListView 绑定内部视图。
当然如果对CollectionViewSource还是不太熟悉,那就多调试几次。



            foreach (var item in cvs.View.CollectionGroups)
{
ICollectionViewGroup vg = (ICollectionViewGroup)item;
dynamic ent = vg.Group as dynamic;
}
  可以通过这个循环。总之我也不太清楚,不过多试几次多用几次就好了。
  5.介绍一下刚学习到的一个值转换器。
  首先需要定义转换器类,转换器要实现IValueConverter接口。其中Convert方法用于把绑定模型的属性类型转换为被绑定UI元素的数据类型,value为转换前数据把转换后数据以返回值形式返回。ConvertBack方法用于当TwoWay绑定的时候UI值发生变化反向修改Model属性值的时候做转换。如果不做TwoWay绑定可以简单抛出“未实现异常”即可。



namespace Zoom.Common
{
public class StrUtils : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, string language)
{
///此处value为Model中的数据,返回值为UI中的数据
return string.Format("中国 :{0}", value);
}
public object ConvertBack(object value, Type targetType, object parameter, string language)
{
///此处是有UI到Model中的转换
return null;
}
}
}
  
  在Xaml中进行调用
  首先引用命名空间    xmlns:StrConverter="using:Zoom.Common"



   





  然后在Page.Resources中调用此类,并做标识




  再在绑定Model的UI控件上进行转换即可。
  查看效果即可看到
  示例代码链接

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-69195-1-1.html 上篇帖子: Win8.1RTM英文版安装中文语言包的两种方法 下篇帖子: 手把手玩转win8开发系列课程(17)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表