A damn at han’s Windows phone book 筆記(9 & 10)

來源:互聯網
上載者:User
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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.