很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的。

通改变屏幕键盘的显示模式可以规范和告诉用户, 这里应该输入什么。

要做到这些并不复杂,只要用到一个类就足矣—— InputScope,它有一个Names属性,包含InputScopeName列表,而InputScopeName的NameValue是一个枚举值,说到底,显示什么样的屏幕键盘就取决于该枚举值。

非常多的内容,至少每个枚举项表示什么,就没有必要一一说明,大家参考SDK文档就可以了。

上面是理论部分,是不是这么神呢,下面我们用实践来证明吧。

启动你的VS,然后新建一个Silverlight for Windows Phone应用项目。

界面很简单,随便放几个TextBox,我们只做几个典型的应用就行了,因为原理都是一样的。比如数字,日期,时间,Email地址等。

[html] view plaincopyprint?
  1. <phone:PhoneApplicationPage
  2. x:Class="InputScpSample.MainPage"
  3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  5. xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
  6. xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
  7. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
  8. xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
  9. mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="768"
  10. FontFamily="{StaticResource PhoneFontFamilyNormal}"
  11. FontSize="{StaticResource PhoneFontSizeNormal}"
  12. Foreground="{StaticResource PhoneForegroundBrush}"
  13. SupportedOrientations="Portrait" Orientation="Portrait"
  14. shell:SystemTray.IsVisible="True" xmlns:my="clr-namespace:System;assembly=mscorlib">
  15. <phone:PhoneApplicationPage.Resources>
  16. <my:Double x:Key="fontSize">32</my:Double>
  17. </phone:PhoneApplicationPage.Resources>
  18. <!--LayoutRoot 是包含所有页面内容的根网格-->
  19. <Grid x:Name="LayoutRoot" Background="Transparent">
  20. <Grid.RowDefinitions>
  21. <RowDefinition Height="Auto"/>
  22. <RowDefinition Height="*"/>
  23. </Grid.RowDefinitions>
  24. <!--TitlePanel 包含应用程序的名称和页标题-->
  25. <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
  26. <TextBlock x:Name="ApplicationTitle" Text="我的应用程序" Style="{StaticResource PhoneTextNormalStyle}"/>
  27. <TextBlock x:Name="PageTitle" Text="规范输入" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
  28. </StackPanel>
  29. <!--ContentPanel - 在此处放置其他内容-->
  30. <ScrollViewer x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"
  31. HorizontalScrollBarVisibility="Auto"
  32. VerticalScrollBarVisibility="Auto">
  33. <StackPanel>
  34. <TextBlock Text="输入Email地址:" FontSize="{StaticResource fontSize}" />
  35. <TextBox Name="txtEmail" FontSize="{StaticResource fontSize}" HorizontalAlignment="Stretch">
  36. <TextBox.InputScope>
  37. <InputScope>
  38. <InputScope.Names>
  39. <InputScopeName NameValue="EmailNameOrAddress"/>
  40. </InputScope.Names>
  41. </InputScope>
  42. </TextBox.InputScope>
  43. </TextBox>
  44. <TextBlock Text="输入数字:" Margin="0,15,0,0" FontSize="{StaticResource fontSize}" />
  45. <TextBox Name="txtNumber" FontSize="{StaticResource fontSize}" HorizontalAlignment="Stretch">
  46. <TextBox.InputScope>
  47. <InputScope>
  48. <InputScope.Names>
  49. <InputScopeName NameValue="Number"/>
  50. </InputScope.Names>
  51. </InputScope>
  52. </TextBox.InputScope>
  53. </TextBox>
  54. <TextBlock Text="输入时间:" Margin="0,15,0,0" FontSize="{StaticResource fontSize}" />
  55. <TextBox Name="txtTime" FontSize="{StaticResource fontSize}" HorizontalAlignment="Stretch">
  56. <TextBox.InputScope>
  57. <InputScope>
  58. <InputScope.Names>
  59. <InputScopeName NameValue="Time"/>
  60. </InputScope.Names>
  61. </InputScope>
  62. </TextBox.InputScope>
  63. </TextBox>
  64. <TextBlock Text="输入人民币:" Margin="0,15,0,0" FontSize="{StaticResource fontSize}" />
  65. <TextBox Name="txtRMB" FontSize="{StaticResource fontSize}" HorizontalAlignment="Stretch">
  66. <TextBox.InputScope>
  67. <InputScope>
  68. <InputScope.Names>
  69. <InputScopeName NameValue="CurrencyChinese"/>
  70. </InputScope.Names>
  71. </InputScope>
  72. </TextBox.InputScope>
  73. </TextBox>
  74. <TextBlock Text="输入电话号码:" Margin="0,15,0,0" FontSize="{StaticResource fontSize}" />
  75. <TextBox Name="txtPhoneNum" FontSize="{StaticResource fontSize}" HorizontalAlignment="Stretch">
  76. <TextBox.InputScope>
  77. <InputScope>
  78. <InputScope.Names>
  79. <InputScopeName NameValue="TelephoneNumber"/>
  80. </InputScope.Names>
  81. </InputScope>
  82. </TextBox.InputScope>
  83. </TextBox>
  84. <TextBlock Text="输入URL:" Margin="0,15,0,0" FontSize="{StaticResource fontSize}" />
  85. <TextBox Name="txtURL" FontSize="{StaticResource fontSize}" HorizontalAlignment="Stretch">
  86. <TextBox.InputScope>
  87. <InputScope>
  88. <InputScope.Names>
  89. <InputScopeName NameValue="Url"/>
  90. </InputScope.Names>
  91. </InputScope>
  92. </TextBox.InputScope>
  93. </TextBox>
  94. <TextBlock Text="输入单个字符:" Margin="0,15,0,0" FontSize="{StaticResource fontSize}" />
  95. <TextBox Name="txtChat" FontSize="{StaticResource fontSize}" HorizontalAlignment="Stretch">
  96. <TextBox.InputScope>
  97. <InputScope>
  98. <InputScope.Names>
  99. <InputScopeName NameValue="Chat"/>
  100. </InputScope.Names>
  101. </InputScope>
  102. </TextBox.InputScope>
  103. </TextBox>
  104. </StackPanel>
  105. </ScrollViewer>
  106. </Grid>
  107. <!--演示 ApplicationBar 用法的示例代码-->
  108. <!--<phone:PhoneApplicationPage.ApplicationBar>
  109. <shell:ApplicationBar IsVisible="True" IsMenuEnabled="True">
  110. <shell:ApplicationBarIconButton IconUri="/Images/appbar_button1.png" Text="按钮 1"/>
  111. <shell:ApplicationBarIconButton IconUri="/Images/appbar_button2.png" Text="按钮 2"/>
  112. <shell:ApplicationBar.MenuItems>
  113. <shell:ApplicationBarMenuItem Text="菜单项 1"/>
  114. <shell:ApplicationBarMenuItem Text="菜单项 2"/>
  115. </shell:ApplicationBar.MenuItems>
  116. </shell:ApplicationBar>
  117. </phone:PhoneApplicationPage.ApplicationBar>-->
  118. </phone:PhoneApplicationPage>

当然了,这种限制并不能十分准确,所以在你应用程序中,确认的时候也应当对特定的数据类型进行多一次验证。

转载于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607166.html

Windows Phone开发(13):如何规范用户的输入行为 转:http://blog.csdn.net/tcjiaan/article/details/7341513...相关推荐

  1. Windows Phone开发(28):隔离存储B 转:http://blog.csdn.net/tcjiaan/article/details/7436959...

    上一节我们聊了目录的操作,这一节我们继续来看看如何读写文件. 首先说一下题外话,许多朋友都在摇摆不定,三心二意,其实这样的学习态度是很不好的,如果你对Windows phone开发有兴趣,如果你真想学 ...

  2. Windows Phone开发(7):当好总舵主 转:http://blog.csdn.net/tcjiaan/article/details/7281421...

    吹完了页面有关的话题,今天我们来聊一下页面之间是如何导航的,在更多情况下,我们的应用程序不会只有一个页面的,应该会有N个,就像我们做桌面应 用开发那样,我们一个应用程序中可能不止一个窗体(极简单的程序 ...

  3. Windows Phone开发(16):样式和控件模板 转:http://blog.csdn.net/tcjiaan/article/details/7367260...

    在前面资源一文中也提过样式,样式就如同我们做HTML页排版时常用到的CSS样式表,它是对于特定娄型的可视化元素,应该可以直接说是针对控件的一种可重用的属性设置列表,这样对于需要设置相同属性值的同类型的 ...

  4. Windows Phone开发(39):漫谈关键帧动画上篇 转:http://blog.csdn.net/tcjiaan/article/details/7550506...

    尽管前面介绍的几种动画会让觉得很好玩了,但是,不知道你是否发现,在前面说到的一系列XXXAnimation中,都有一个共同点,那就是仅仅针对两个值的目标值之间产生动画,如果使用By,将在原值和加上By ...

  5. Windows Phone开发(46):与Socket有个约会 转:http://blog.csdn.net/tcjiaan/article/details/7669315...

    不知道大家有没有"谈Socket色变"的经历?就像我一位朋友所说的,Socket这家伙啊,不得已而用之.哈,Socket真的那么恐怖吗? 其实这话一点也不假,Socket有时候真的 ...

  6. Windows Phone开发(29):隔离存储C 转:http://blog.csdn.net/tcjiaan/article/details/7447469...

    本文是隔离存储的第三节,大家先喝杯咖啡放松,今天的内容也是非常简单,我们就聊一件东东--用户设置. 当然了,可能翻译为应用程序设置合适一些,不过没关系,只要大家明白,它就是用于保存我们的应用程序的设置 ...

  7. Windows Phone开发(27):隔离存储A 转:http://blog.csdn.net/tcjiaan/article/details/7425212...

    在很多资料或书籍上都翻译为"独立存储",不过,我想了一下,决定将IsolatedStorage翻译为"隔离存储",我想这样会更方便大家对这一概念的理解. 关于何 ...

  8. Windows Phone开发(32):路径之PathGeometry 转:http://blog.csdn.net/tcjiaan/article/details/7469512...

    说起路径这玩意儿,其实说的就是Path类,它藏在命名空间System.Windows.Shapes下,应该好找,它有一个很重要的属性Data,你不妨在"对象浏览器"中把它抓出来看看 ...

  9. Windows Phone开发(11):常用控件(下) 转:http://blog.csdn.net/tcjiaan/article/details/7300085...

    WP控件大部分都可以从Silverlight中继承过来,这里我也只能拿一部分作演示,对于其它控件如何使用,可以参考SDK相关说明以及Silverlight SDK文档. 一.RadioButton控件 ...

最新文章

  1. volatile的用法
  2. mysql字符串操作
  3. Linux系统的启动引导过程
  4. jupiter 依赖_Jupiter 介绍
  5. 五十九、如何求N个数的最大公约数和最小公倍数
  6. SSIS中循环遍历组件[Foreach Loop Container]
  7. SAP Spartacus的OccCmsPageNormalizer
  8. Failed to capture snapshot of output files for task ':UserAppModule:packagePreDebug' property 'outpu
  9. 综述 | 联邦学习-新兴的人工智能基础技术
  10. 音视频开发(10)---nginx-rtmp视频流服务器搭建
  11. ado.net mysql 转义_ADO.NET数据库查询
  12. 超期天数计算机函数公式大全,Excel计算天数的函数与公式总结
  13. 如何写好简历与迎接面试
  14. word打开html是空白,网页复制到Word之后或者出现空白或者格式变乱该怎么办
  15. python拦截游戏封包_【求助】关于pygame封包问题
  16. 四千个厂商默认账号密码 默认登录凭证
  17. 一个k8s集群——跨云服务器部署
  18. IOS开发百度地图API入门到精通-用点生成路线,导航,气泡响应
  19. 计算机丢失系统文件如何找回,如何恢复电脑上丢失的文件
  20. Ehcache二级缓配置永不过期,缓存失效问题 ---- 原因没有加载ehcache.xml配置文件,加载了默认的ehcache-failsafe.xml配置文件

热门文章

  1. Javascript中字符串输出html的动态链接
  2. ubuntu nfs
  3. 三极管共射、共集、共基分析及比较
  4. Apache 的管理及优化web
  5. 活动回顾 | 8月7日Apache Flink Meetup
  6. SAE 助力「海底小纵队学英语」全面拥抱 Serverless,节省 25% 以上成本
  7. 7.24 杭州站 | 阿里云 Serverless Developer Meetup
  8. 5月29日阿里云开发者大会了解一下?
  9. 揭秘 | 大流量场景下发布如『丝般顺滑』背后的原因
  10. 自建裸金属实例Oracle RAC上云