其实从去年后半年起,自己就开始学习windows phone 8 的开发,主要是自己感兴趣同时我也很看好这个系统(现在还是感觉自己认识的有点晚了)。工作日的话基本很忙,所以当时想到然的认为用晚上时间可以看资料,但是实际到晚上以后已经没心情看电脑了,有一些日子是强迫自己学习的,可是到现在看来已经忘了很多,当然周末也用上一些了(我认为程序员应该利用周末时间多去外面转转,毕竟有时候周末还加班什么的,而不是依旧盯着电脑玩游戏,这样的话不仅对身体而言,还有对自己紧张的大脑都起不了真正休息的效果。)。不过还好应该算有些进步了吧,如果顺利的话,过段时间就能发布自己的第一个window phone8 app了。当然这其中也学习一些新的知识,我想有时间慢慢总结写出了,这样不仅对自己是个巩固,对想学习的人希望也是个帮助。

windows phone 系统界面,是扁平化的磁贴 组成,个性十足,个人超级喜欢(我顺便也把自己的博客主题风格也改成了简洁版,希望大家吐槽哦)。 其中用来显示列表信息的控件有listbox和LongListSelector两个,其中longlistselector控件功能强大,展示效果也很符合windows phone 风格。所以我想最先拿出来练练手(现学现卖),下面是就着自己做的一个实例展开的。

  xmal代码:

 <phone:LongListSelector x:Name="LLSContacts" Margin="480,20,480,0"  Width="480"  LayoutMode="List" IsGroupingEnabled="true" HideEmptyGroups ="true" Padding="0,0,0,10" >
<!--head-->
<phone:LongListSelector.GroupHeaderTemplate>
<DataTemplate>
<StackPanel Margin="12,0,0,0" Width="432" Height="90" >
<Border Background="Transparent" Margin="0" Padding="0,0,0,10" >
<Border Background="#008AFF" BorderBrush="#008AFF" BorderThickness="2" Width="80" Height="80" HorizontalAlignment="Left" Margin="0" >
<TextBlock Text="{Binding Key}" FontSize="48" Padding="6"
FontFamily="{StaticResource PhoneFontFamilySemiLight}" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Foreground="White"/>
</Border>
</Border>
</StackPanel>
</DataTemplate>
</phone:LongListSelector.GroupHeaderTemplate>
<!--body-->
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" Margin="12,0,0,0" Height="90" Width="432" >
<!--用图像替换矩形-->
<!--<Image Width="80" Height="80" Source=""/>-->
<Border Width="80" Height="80" CornerRadius="0"> <Border.Background>
<ImageBrush Stretch="Fill" ImageSource="{Binding Images}"/>
</Border.Background>
</Border>
<StackPanel Width="311" Margin="8,0,0,0" >
<TextBlock Text="{Binding DisplayName}" TextWrapping="Wrap" Margin="10,5,10,0" Style="{StaticResource PhoneTextExtraLargeStyle}" FontSize="{StaticResource PhoneFontSizeLarge}" Foreground="#FF555555" />
<TextBlock Text="{Binding PhoneNumbers}" TextWrapping="Wrap" Margin="10,5,10,0" Style="{StaticResource PhoneTextSubtleStyle}" Foreground="#FF9B9A9A" />
</StackPanel>
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
<phone:LongListSelector.JumpListStyle>
<Style TargetType="phone:LongListSelector">
<Setter Property="GridCellSize" Value="113,113"/>
<Setter Property="LayoutMode" Value="Grid" />
<Setter Property="ItemTemplate"> <Setter.Value>
<DataTemplate> <Border Background="{Binding Converter={StaticResource BackgroundConverter}}" Width="113" Height="113" Margin="6" >
<TextBlock Text="{Binding Key}" FontFamily="{StaticResource PhoneFontFamilySemiBold}" FontSize="48" Padding="6"
Foreground="{Binding Converter={StaticResource ForegroundConverter}}" VerticalAlignment="Center"/>
</Border>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</phone:LongListSelector.JumpListStyle>
</phone:LongListSelector>

1.GroupHeaderTemplate:该模板字面上理解为组头部模板,也就是显示列表内容分组的页眉,通常默认列是以你设定分组字段的手字母为依据进行分组,如果是汉字默认是单词拼音的第一个字母,功能上可以理解为组的节点吧。

2.ItemTemplate:列表项模板,是LongListSelector控件最基本的,里面就是显示动态列表项单行,根据传进来的集合显示一哗啦子。

3.JumpListStyle:设置跳转列表的样式,在里面设置跳转后节点界面的内容和风格。常用情况是呈现分组选项页,也就是点分组页眉内容跳转到一个只有组头部想内容的页面,用户可选择点击然后定位到列表该分组的地方,方便实用。

4.StaticResource:静态资源,实际上是为XAML 属性特性提供值的标签扩展,我们可以理解为绑定标签属性的一种语法把。比如 FontFamily="{StaticResource PhoneFontFamilySemiLight}" ,字体为系统内定动态属性,我啥样你就啥样。

5.还有个地方设置标签属性特殊点,在jumplistStyle中你们可以看到这个Background="{Binding Converter={StaticResource BackgroundConverter}}",这是实际上是设置我们自己定义的样式,对应的resource代码如下

<phone:PhoneApplicationPage.Resources>
<phone:JumpListItemBackgroundConverter x:Key="BackgroundConverter" Enabled="#FF008AFF"/>
<phone:JumpListItemForegroundConverter x:Key="ForegroundConverter" Enabled="White"/>
</phone:PhoneApplicationPage.Resources>

前台的代码即是这样,其他也没什么特殊,相信没学过xaml的人也看得懂吧,

还有一点要注意:如果要实现今天所展示功能,请在LongListSelector中加上 IsGroupingEnabled=“true”和 HideEmptyGroup="true"这两个属性。因为默认情况下不带有的

后台代码

后台我直接绑定一个集合到控件既可

 List<AlphaKeyGroup<MyContacts>> DataSource = AlphaKeyGroup<MyContacts>.CreateGroups(ListContact,
System.Threading.Thread.CurrentThread.CurrentUICulture,
(MyContacts s) => { return s.DisplayName; }, true); LLSContacts.ItemsSource = DataSource;

前台对应的{bing=***}即是对象的属性

展示效果图

       

最后想说一下,如果有喜欢wp8开发的朋友,请叫上我吧,因为我也一样。目前只是我一个人摸索开发中,中间肯定很累且少不了走弯路,不过我相信以后肯定有更多人参与的,大家一起加油。

Wp8—LongListSelector控件使用的更多相关文章

  1. [WP8.1UI控件编程]SemanticZoom控件实现分组列表

    11.1.5 SemanticZoom实现分组列表 SemanticZoom控件可以让用户实现一种更加高级的列表,这种列表可以对列表的项目进行分组,同时这个SemanticZoom控件会提供两个具有相 ...

  2. [WP8.1UI控件编程]Windows Phone XAML页面的编译

    1.1.2 XAML页面的编译 Windows Phone的应用程序项目会通过Visual Studio完成XAML页面的编译,在程序运行时会通过直接链接操作加载和解析XAML,将XAML和过程式代码 ...

  3. [WP8.1UI控件编程]Windows Phone大数据量网络图片列表的异步加载和内存优化

    11.2.4 大数据量网络图片列表的异步加载和内存优化 虚拟化技术可以让Windows Phone上的大数据量列表不必担心会一次性加载所有的数据,保证了UI的流程性.对于虚拟化的技术,我们不仅仅只是依 ...

  4. [WP8.1UI控件编程]Windows Phone VirtualizingStackPanel、ItemsStackPanel和ItemsWrapGrid虚拟化排列布局控件

    11.2.2 VirtualizingStackPanel.ItemsStackPanel和ItemsWrapGrid虚拟化排列布局控件 VirtualizingStackPanel.ItemsSta ...

  5. [WP8.1UI控件编程]Windows Phone动画方案的选择

    8.1 动画方案的选择 Windows Phone的动画实现方式有线性插值动画(3种类型).关键祯动画(4种类型)和基于帧动画,甚至还有定时器动画,然后动画所改变的UI元素属性可以是普通的UI元素属性 ...

  6. [WP8.1UI控件编程]Windows Phone理解和运用ItemTemplate、ContentTemplate和DataTemplate

    2.2.5 ItemTemplate.ContentTemplate和DataTemplate 在理解ItemTemplate.ContentTemplate和DataTemplate的关系的之前,我 ...

  7. [WP8.1UI控件编程]Windows Phone自定义布局规则

    3.2 自定义布局规则 上一节介绍了Windows Phone的系统布局面板和布局系统的相关原理,那么系统的布局面板并不一定会满足所有的你想要实现的布局规律,如果有一些特殊的布局规律,系统的布局面板是 ...

  8. LongListSelector 控件 在 wp7 和wp8中的不同之处

    众所周知,wp8中的LongListSelector集成到了Rom中. 性能得到了提升,一些api也发生了变化. 在这里总结一下,作为分享,也作为备忘. 参考文献 Windows Phone 8 XA ...

  9. WP8.1 控件默认字体颜色 配置文件位置

    C:\Program Files (x86)\Windows Phone Kits\8.1\Include\abi\Xaml\Design\generic.xaml 可在App.xaml文件中over ...

随机推荐

  1. LUA之string的使用

    --string.len(s)          --返回字符串s的长度 --string.rep(s, n)--返回重复n次字符串s的串,你使用string.rep("a", 2 ...

  2. hibernate操作数据库例子

    1.工程目录结构如下 2.引入需要的jar包,如上图. 3.创建持久化类User对应数据库中的user表 package com.hibernate.配置文件.pojo; import java.sq ...

  3. 并发包之Future:代码级控制超时时间

    先谢Doug Lea. 使用场景: 最近在做webservice调用的时候,发现一个问题,对方的webservice接口很不稳定,所以在获取的数据时候经常要等待很久才能把数据全部拉回来,甚至有时候直接 ...

  4. c# 如何使用wlanapi连接电脑到wifi

    http://www.codeproject.com/Articles/72105/Manage-WiFi-with-Native-API-WIFI-on-Windows-XP-SP Introduc ...

  5. WAF绕过神器 (过安全狗、智创SQL注入)

    WAF绕过神器 (过安全狗.智创SQL注入) 发布时间:-- :10文章来源:网络文章作者:panni007 点击次数: 次 分享到: QQ空间 QQ微博 新浪微博 开心网 人人网 摘要:起因: by ...

  6. C++文件输入输出

    #include <iostream> //有些系统里面可以省略此头文件 #include <fstream> #include <string> int main ...

  7. mysql 判空

    2013年9月10日 15:44:36 update `zzb_table` set status = 1 where `link` != ''; 不要用 update `zzb_table` set ...

  8. springMVC的一些工具类

    springMVC的一些工具类,主要有转换器,读取器 读取文件: package cn.edu.hbcf.common.springmvc; import java.util.HashMap; imp ...

  9. vs c++中读取数据流并存储

    ifstream in("test.txt"); vector<string> vs; string s; while(!in.eof()) { in>>s ...

  10. Spell checker(poj 1035)

    题意:     此题是一个字符串的问题,首先要给出一个字典,里面存储了数个单词.而后,给出一个单词,如果字典中存在,那么就输出correct,如果字典中没有,那么就要判断是不是这个单词有错误,错误有3 ...