Windows Phone开发(13):如何规范用户的输入行为

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

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

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

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

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

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

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

  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>

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

时间: 2024-10-12 21:02:07

Windows Phone开发(13):如何规范用户的输入行为的相关文章

Windows Phone开发:如何规范用户的输入行为

很多时候,我们对用户的操作或输入做一定程度的限制,以避免发生不必要的异常或错误,因此,对一些特殊的类型,进行输入限制是很有必要的.通改变屏幕键盘的显示模式可以规范和告诉用户, 这里应该输入什么.要做到这些并不复杂,只要用到一个类就足矣—— InputScope,它有一个Names属性,包含InputScopeName列表,而InputScopeName的NameValue是一个枚举值,说到底,显示什么样的屏幕键盘就取决于该枚举值. 非常多的内容,至少每个枚举项表示什么,就没有必要一一说明,大家参

【万里征程——Windows App开发】编辑文本及键盘输入

相信大家都会使用TextBox,但如果要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. PasswordBox很明显就是一个密码框了,和其他的控件相比其有2个特殊之处,一个是其可以用MaxLength来控制最大的长度,一个是用PasswordChanged来捕捉密码的改名.显然比如QQ密码的MaxLength就是16位了,而PasswordChanged可以用来监测比如用户设置的密码和用户名是否相同.

Java学习——传说中的13个规范

早就听说J2EE有十三个规范,可是看完视频我都没有发现有什么规范,这就让我纳闷了,都说学习java就是学习十三个规范,可是它到底是什么呢? 原来十三个规范就是十三个API文档,视频里讲到的都是属于API文档的知识.那么,让我们一起来了解一下这传说中的十三个规范吧. 1.JDBC(Java Database Connectivity): 用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成. 个人理解:跟微软的ODBC很像,应该说是ODB

通俗理解J2EE的13种规范

学习到Java就不得不了解为人熟知的13种规范,小编从网上各种搜集资料,可是都是一些专业性的术语,确实很令人费解,讲解的都很抽象.在小编的不懈努力之下,通过看别人的博客,汇总了以下的内容. 1.JDBC(java Database Connectivity):   官方:JDBC API为访问不同的数据库提供了一种统一的途径,就像ODBC一样,JDBC对开发者屏蔽了一些细节问题,同时,JDBC对数据库的访问也具有平台无关性. 小编:学习过.NET的一定了解ODBC,这是属于同一个性质的,就是为了

J2EE的13个规范总结

什么是J2EE? 在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复开发,开发周期长和代码可靠性差等问题.但是,各公司的中间件不兼容的问题就出现了,用户无法将它们组装在一起为自己服务.于是,"标准"就应运而生了. J2EE就是基于JAVA技术的一系列标准. J2EE是Java2平台企业版(Java 2Platform Enterprise Edition)

使用通用权限管理系统组件的随想 - 提高开发能力、规范开发、快速见效

本人供职于国内一家比较知名的物流公司,一直从事于基层公司物流软件的规划和设计开发工作,在长期的工作实践中深深地体会到作为不是专业的软件行业而又从事软件开发行业的业余性的软件开发设计人员来说,在工作中需要克服的困难和面对的艰辛有多大多难. 对与专业的软件开发设计公司来说,毋庸置疑的一点是都会有自己成熟稳定的开发框架和组件,并且是在不断的完善中,对供职其中的开发设计人员在完成业务性的开发设计工作外日常工作的一个重心就在于了解.熟悉进而创新性的完善他.作为软件开发设计人员都知道,任何一个软件系统都离不

前端开发规范总结 总结前端开发模式和规范

1.前端开发规范 WEB客户端开发自成体系, 主要用于智能终端(iPhone.Android手机.iPad.Android Pad)和传统PC的开发.JS规范.HTML规范和CSS规范对客户端开发进行全方位指导,统一编码规范.提高可读性.降低维护成本. 1.1一般规范 应用在 HTML, JavaScript 和 CSS上的通用规则. 1.1.1文件/资源命名 1)     以可读性而言,减号(-)用来分隔文件名: 2)     使用驼峰方式命名文件名与文件所在的文件夹,便于统一配置: 3)  

Windows驱动开发基础(八)内存管理

Windows驱动开发基础系列,转载请标明出处:http://blog.csdn.net/ikerpeng/article/details/38826159 就32位的计算机来说,他有4G的真实的物理内存.但是这样是不够的,于是引入了虚拟内存的概念.使得每一个进程都有4G的虚拟内存. 虚拟内存实际上就是采用了一种映射的方式.4G的内存实际上被分页.一般来说一个页的大小是4K.也是说它被分为了1M个页.在这么多的页里面,有一部分是对应于物理内存的(可以是多对一的):有一部分是对应于磁盘上的空间,但

Windows Phone开发(10):常用控件(上)

Windows Phone的控件有几个来源,和传统的桌面应用程序开发或Web开发一样,有默认提供的控件和第三方开者发布的控件.一般而言,如果不是过于复杂的界面布局,使用默认控件就足矣.相比之下,Android SDK中尽管提供了许多可视化控件,但你会发现,实际开发用到的并不多,而且很多控件完全只是摆设,既没有公开相应的操作方法也没有更多可用于开发者自行处理的监听器(这里我习惯翻译为监听器,在安卓里面没有像C#那样使用事件,而是new一个监听器,当然原理是相似的). 除了游戏开外,我们在WP上基本