Style的用法
首先在XAML里定义,作为资源字典的一部分:
<!-- Add one item to the page's resource dictionary -->
<phone:PhoneApplicationPage.Resources>
<!-- A style for the two text blocks in WaitingForCallPanel -->
<Style x:Key="WaitingTextStyle" TargetType="TextBlock">
<Setter Property="Foreground" Value="#99FFFFFF"/>
<Setter Property="FontFamily"
Value="{StaticResource PhoneFontFamilySemiBold}"/>
<Setter Property="FontSize" Value="23"/>
</Style>
</phone:PhoneApplicationPage.Resources>
就可以直接在XAML中引用了:
<TextBlock x:Name="TapToHideTextBlock" Margin="11,0,0,0" Text="(tap screen to hide)" Style="{StaticResource WaitingTextStyle}"/>
注意,Style中不支持动态绑定,向下面这样是不行的:
App的生命周期
app退出的两种状态:closed和deactived(deactived也称作tombstoned)
打开closed的程序,则程序重新初始化。
打开deactived的程序,则程序继续执行。
变为closed的唯一方法:在程序初始页面点back按钮。也正因为这一点,其他退出程序的方式都应该是deactive,也就是在back stack里能找得回来。
Deactived的程序不保证能再次active,因为内存不足或者关机的原因。
通过触摸图标打开程序(无论该程序之前是否被打开),都是launch而不是active。重新打开后,会使得之前在back stack中的该程序页面被删除。
Obscured和Unobscured事件
当有来电、接到toast通知、或锁屏的时候,会触发Obsured事件,如果用户接起电话切出当前程序,则触发Deactived事件。
一个Obscured的handler无法知道是具体什么原因造成的,唯一能知道的是是否由锁屏导致,方法是查看事件参数的IsLocked属性。
在App.xmal里指定事件handler
<Application.ApplicationLifetimeObjects> <!--Required object that handles lifetime events for the application--> <shell:PhoneApplicationService Launching="Application_Launching" Closing="Application_Closing" Activated="Application_Activated" Deactivated="Application_Deactivated"/> </Application.ApplicationLifetimeObjects>
Application state 和 Page state
要永久保存状态,用isolated storage,要暂时保存状态则用两个dictionary:application state和page state。
程序在actived之后,仍然可以存取刚才保存在application state和page state中的变量。注意,无论是close掉还是重新launch,都会清空。
这些临时性的state可以用来当缓存,例如存放从网络获取到的数据(actived回来就不必再重新获取了),再如DataContext也可以作为state字典的一个entry。
一般地,我们在OnNavigatedTo中决定从哪里读取,在OnNavigatedFrom决定存到哪里。
要保证deactived handler中所做的事情包含了closing handler所做的事情,因为如果在closing的时候要保存数据,那么在deactived的时候也需要保存。因为程序如何关闭取决于用户的行为,不能保证closing事件必定被触发。
ControlTemplate
每个控件(Control)都有一个Template属性,其类型叫做ControlTemplate。其作用是改变控件的样式。
在自定义样式的同时,依然需要控件的其他属性,这需要TemplateBinding。这块内容比较庞大,具体用法可参加:
http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html