windows phone 8 开发学习笔记(二)

今天进入考试已经进入考试周了,大学的考试周很宁静很漫长,这是一个难得的一整块的时间可以让自己好好的做自己想做的事情。这是wp8开发学习笔记的第二个部分,今天做好了笔记,晚上整理发布。

简单说明一下,文章中很多技术名词,但是比较讨厌堆砌名词,所以不会有太多的名词。懂就可以了,没必要把名词顶在头上大笑,其实挺反感很多人用名词去吓小白。如果觉得看着不爽,留言一个,自然就会在以后的文章里面修改。

设计

和老师做项目以来,学习了UML和rational rose,或多或少的接触到了敏捷开发,使用了scrum开发模板,也使用了MSF模板,做了类图设计,做了用例图,也做了时序图,才明白原来写程序的时候写代码的工作真的不是很重要,代码的确重要,但是设计同样的非常有价值,好的设计会让程序的代码更加漂亮,让程序的架构更加的合理。

windows phone设计原则

  1. 工艺出色
    1. 关注细节
    2. 安全可靠
    3. 利用层次和平衡营造结构感和节奏感
    4. 网格对齐
  2. 快速流畅
    1. 处于活动状态
    2. 令人愉悦的设计
    3. 为触控而设计
    4. 直观的交互
    5. 快速响应
    6. 引人入圣
  3. 事半功倍
    1. 聚焦于内容
    2. 重点直接明确
    3. 内容优于镶边(不要喧宾夺主)
    4. 激发信心(使用过程愉悦)
  4. 真实的数字
    1. 主要目标是信息传递,不是传递界面本身
    2. 链接云端
    3. 动态可变
    4. 漂亮的字体
    5. 大胆鲜明的色彩
可以使用很多工具和模板,使用blend会比直接使用VS更加的出色。对了,我是用的VS 是2013 update 2。后文中会出现代码,有些我调试过,有些没有,会标记清楚的。在此推荐《windows phone用户体验指南》。

设计

设计时先制作草图,首先要设计应用内导航,先厘清导航的逻辑,然后再去实现程序的细节。设计师组要聚焦在程序的外观和感觉上。程序员(可怜的码农)组要在实现程序功能上,但是程序体验很重要。想起WP上的淘宝了,谁用谁知道,和安卓差了几条街,还有WP上的优快云(希望不要被查水表),这系列文章发完后,做个优快云非官方客户端出来到商店,代码贴这里。当然这是后话。


应用程序模板

  1. windows phone应用,就是那种最基本的只有一个页面的程序。
  2. windows phone数据绑定应用(使用model-view-viewmodel架构创建的列表和导航控制)。
  3. windows phone pivot应用(用户使用触控手势切换pivot数据显示)。
  4. windows phone panorama应用(全景程序模板(大爱以前的照片APP啊,升级后变丑了))。

补充点基础知识:

  1. XAML
    1. 每个XAML元素都是一个对象的声明(system.windows.Controls中的对象,显示出来的对象都经过了渲染)。
    2. 元素的常见属性
      1. 屏幕中的位置(position)
      2. 高度和宽度(height & width)
      3. 字体的颜色和大小
      4. <margin>插入间距
    3. 所有的元素都继承于frameworkelement类。
    4. 魔术(12)
      1. UI设计时常用12或者12的倍数
      2. 长吁左侧的页边距至少为24
      3. 控件间的边距为12px的整数倍
      4. 以12px为对齐的增量
      5. VS或者BLEND中有显示12px网格的功能
      6. 资源文件中包含alignmentGrid.png
  2. 数据绑定
    1. blend可以从xml或者现有的类中导入数据
    2. 使用xml绑定数据(使用MVVM模型,绑定到的必须是共有类)
    3. TextBlock 绑定数据时有三种OneTime,OneWay,TwoWay。其中OneTime表示系统初始化的时候绑定,OneWay单向绑定,程序无法修改模型中的数据,TwoWay程序运行过程中可以修改,但是数据类必须实现INotifyPropertyChanged接口。
有个简单的例子对比下wp7.1和wp8的viewmodel
WP7.1的(大小写大家注意下)
<span style="font-family:FangSong_GB2312;">Public class ItemViewModel:INotifypropertyChanged
{
	Private string _id
	{
		Get{return _id;}
		Set
		{
			If(value!=_id)
			{
				_id=value;
				NotifypropertyChanged("ID");
			}
		}
	}
	Public event PropertyChangedEventHandler PropertyChanged;
	Private void NotifyPropertyChanged(string propertyName)
	{
		PropertyChangedEventHandler handler=PropertyChanged;
		If(null!=handler)
		{
			Handler(this,new PropertyChangedEventArgs(propertyName));
		}
	}
}
</span>
WP8的代码(注意大小写)
<span style="font-family:FangSong_GB2312;">Public class ItemViewModel:INotifypropertyChanged
{
	Private string _id;
	Public string ID
	{
		Get{return _id;}
		Set{this.SetProperty(ref this._id,value)}
	}
	Public event PropertyChangedEventHandler PropertyChange;
	Protected bool Setproperty<T> (ref T storage,T value,[CallerMemberName] string propertyName=null)
	{
		If(object.Equals(storage,value))return false;
		Storage=value;
		This.OnPropertyChanged(propertyName);
		Return true;
	}
	Protected void OnPropertyChanged([CallerMemberName] string propertyName=null)
	{
		Var eventHandler=this.propertyChanged;
		If(eventHandler!=null)
			eventHandler(this,new PropertyChangedEventArgs(propertyName);
	}
}
</span>

最后说一下一个有jump list的新加的控件LongListSelector

  • 相当于listbox++
  • 可以实现分组列表。
  • 具有jumplist
  • 包含在rom里面,提供更好的性能。
  • 其拥有的模板
  • GroupFooterTemplate-列表分组的结尾区域
  • GroupHeaderTemplate-列表分组的顶部区域
  • ItemTemplate-每一个列表项(可以改变列表每一项的布局,可以通过blend修改模板)
  • JumpListStyle-jump list的布局
  • ListFooterTemplate-整个列表的结尾部分
  • ListHeaderTemplate-整个列表的顶端




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值