SupportedOrientations 和 Orientation
SupportedOrientations比較有用,而Orientation只能影響到設計時的狀態,無法影響運行時的狀態,因此可以不管Orientation。
Landscape分為Left和Right兩種
豎直著看的話,Landscape Left是螢幕在鍵盤左邊,Landscape Right是螢幕在鍵盤右邊。
一旦支援了Landscape,就必須同時支援左右兩種。
獲得解析度
Application.Current.Host.Content.ActualWidth
Application.Current.Host.Content.ActualHeight
螢幕小鍵盤
On-Screen Keyboard,也叫software input panel(SIP),豎著高339像素,橫著搞259像素。
Input Scope:調出不同的鍵盤
目前有62種input scope但只有11種不同的鍵盤,也就是說,其中很多是不同名字的input scope對應著同一種鍵盤,例如numbers和digits。
更多內容參考P66
Input Scope只能用來粗略限制一下輸入(而且是在沒有物理鍵盤的情況下),精確的控制還是要通過編程。
例如要控制TextBox的輸入只能是數字:
多行的TextBox
一般做下面三步:
- 把AcceptsReturn屬性設定為true(預設是false)
- 把TextWrapping屬性設定為Wrap(預設是NoWrap)
- 把MinHeight設定得高一點,讓人一看就是多行的。
TextWrapping指的是一行的文字超出textbox寬度的時候,是否自動折行。若一個TextBox只設定了TextWrapping=Wrap,AcceptsReturn=false,則它也是多行的,只不過裡面無法用斷行符號換行。
英文大小寫規範
全大寫:application title
全小寫:
1 各種title: page title, group title, list title, panorama and pivot headings.
2 button text
句子首字母大寫:其他所有的
單字首大寫:不要用
標點規範
不要用冒號,除非本來就該有。
不要用省略符號,除非進度條的文字說明。(不像PC上預知會開啟新視窗而加上…)
用逗號來表示分割。
用&不用and,用短不用長。
滾動控制項 ScrollViewer
捲軸的可見度VerticalScrollBarVisibility/HorizontalScrollBarVisibility有四個枚舉值,但實質上只有兩個含義。
Visible=Auto=啟用
Disabled=Hidden=禁止
VerticalScrollBarVisibility的預設值是啟用。
HorizontalScrollBarVisibility的預設值是禁止。
寬高大小
應該通過MinHeight和MaxHeight等,給出一個範圍,而不是指定具體值(給Height賦值)。
Auto意味著它的值是double.NaN,即根據內容來決定大小。當沒有給Height,Width顯示賦值的時候,值都是double.NaN。
若要判斷長度寬度值是否是Auto,只需要用double類的靜態方法IsNaN判斷。
若要獲得長度寬度值到底是多少,用ActualHeight,ActualWidth,這兩個都是唯讀。
Margin和Padding
Margin和Padding都是Thickness類型的值,該類型的值可以由1個、2個、或4個參數來決定。
4個參數的順序是:左、上、右、下
2個參數的順序是:左右、上下 例如1,2表示成四個參數是1,2,1,2
Margin指的是與父元素的間隔,較常用。允許負值。
Padding指的是與子項目的間隔,不常用。不允許負值。TextBox的Padding預設值是2,一般不建議修改Padding的預設值,因為這些預設值是微軟反覆嘗試過之後預設好的。
打電話
PhoneCallTask是用來打電話的,但在模擬器上執行個體化PhoneCallTask會拋異常退出,因此可以通過Microsoft.Devices.Environment.DeviceType這個屬性來判斷運行環境。
打電話的代碼如下:
void TapHereToCall_MouseLeftButtonUp(object sender, MouseButtonEventArgs e){ if (Microsoft.Devices.Environment.DeviceType == Microsoft.Devices.DeviceType.Emulator) { return; } PhoneCallTask phoneLauncher = new PhoneCallTask(); phoneLauncher.DisplayName = this.ContactNameTextBox.Text; phoneLauncher.PhoneNumber = this.PhoneNumberTextBox.Text; phoneLauncher.Show();}