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(); }