很多時候,我們對用戶的操作或輸入做一定程度的限制,以避免發生不必要的異常或錯誤,因此,對一些特殊的類型,進行輸入限制是很有必要的。
通改變屏幕鍵盤的顯示模式可以規范和告訴用戶, 這里應該輸入什么。
要做到這些并不復雜,只要用到一個類就足矣—— InputScope,它有一個Names屬性,包含InputScopeName列表,而InputScopeName的NameValue是一個枚舉值,說到底,顯示什么樣的屏幕鍵盤就取決于該枚舉值。
?
非常多的內容,至少每個枚舉項表示什么,就沒有必要一一說明,大家參考SDK文檔就可以了。
?
上面是理論部分,是不是這么神呢,下面我們用實踐來證明吧。
?
啟動你的VS,然后新建一個Silverlight for Windows Phone應用項目。
界面很簡單,隨便放幾個TextBox,我們只做幾個典型的應用就行了,因為原理都是一樣的。比如數字,日期,時間,Email地址等。
[html]?view plaincopyprint?
<phone:PhoneApplicationPage???????x:Class="InputScpSample.MainPage"??????xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"??????xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"??????xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"??????xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"??????xmlns:d="http://schemas.microsoft.com/expression/blend/2008"??????xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"??????mc:Ignorable="d"?d:DesignWidth="480"?d:DesignHeight="768"??????FontFamily="{StaticResource?PhoneFontFamilyNormal}"??????FontSize="{StaticResource?PhoneFontSizeNormal}"??????Foreground="{StaticResource?PhoneForegroundBrush}"??????SupportedOrientations="Portrait"?Orientation="Portrait"??????shell:SystemTray.IsVisible="True"?xmlns:my="clr-namespace:System;assembly=mscorlib">??????<phone:PhoneApplicationPage.Resources>??????????<my:Double?x:Key="fontSize">32</my:Double>??????</phone:PhoneApplicationPage.Resources>????????????<Grid?x:Name="LayoutRoot"?Background="Transparent">??????????<Grid.RowDefinitions>??????????????<RowDefinition?Height="Auto"/>??????????????<RowDefinition?Height="*"/>??????????</Grid.RowDefinitions>??????????????????????<StackPanel?x:Name="TitlePanel"?Grid.Row="0"?Margin="12,17,0,28">??????????????<TextBlock?x:Name="ApplicationTitle"?Text="我的應用程序"?Style="{StaticResource?PhoneTextNormalStyle}"/>??????????????<TextBlock?x:Name="PageTitle"?Text="規范輸入"?Margin="9,-7,0,0"?Style="{StaticResource?PhoneTextTitle1Style}"/>??????????</StackPanel>??????????????????????<ScrollViewer?x:Name="ContentPanel"?Grid.Row="1"?Margin="12,0,12,0"????????????????????????HorizontalScrollBarVisibility="Auto"????????????????????????VerticalScrollBarVisibility="Auto">??????????????<StackPanel>??????????????????<TextBlock?Text="輸入Email地址:"?FontSize="{StaticResource?fontSize}"?/>??????????????????<TextBox?Name="txtEmail"?FontSize="{StaticResource?fontSize}"?HorizontalAlignment="Stretch">??????????????????????<TextBox.InputScope>??????????????????????????<InputScope>??????????????????????????????<InputScope.Names>??????????????????????????????????<InputScopeName?NameValue="EmailNameOrAddress"/>??????????????????????????????</InputScope.Names>??????????????????????????</InputScope>??????????????????????</TextBox.InputScope>??????????????????</TextBox>????????????????????<TextBlock?Text="輸入數字:"?Margin="0,15,0,0"?FontSize="{StaticResource?fontSize}"?/>??????????????????<TextBox?Name="txtNumber"?FontSize="{StaticResource?fontSize}"?HorizontalAlignment="Stretch">??????????????????????<TextBox.InputScope>??????????????????????????<InputScope>??????????????????????????????<InputScope.Names>??????????????????????????????????<InputScopeName?NameValue="Number"/>??????????????????????????????</InputScope.Names>??????????????????????????</InputScope>??????????????????????</TextBox.InputScope>??????????????????</TextBox>????????????????????<TextBlock?Text="輸入時間:"?Margin="0,15,0,0"?FontSize="{StaticResource?fontSize}"?/>??????????????????<TextBox?Name="txtTime"?FontSize="{StaticResource?fontSize}"?HorizontalAlignment="Stretch">??????????????????????<TextBox.InputScope>??????????????????????????<InputScope>??????????????????????????????<InputScope.Names>??????????????????????????????????<InputScopeName?NameValue="Time"/>??????????????????????????????</InputScope.Names>??????????????????????????</InputScope>??????????????????????</TextBox.InputScope>??????????????????</TextBox>????????????????????<TextBlock?Text="輸入人民幣:"?Margin="0,15,0,0"?FontSize="{StaticResource?fontSize}"?/>??????????????????<TextBox?Name="txtRMB"?FontSize="{StaticResource?fontSize}"?HorizontalAlignment="Stretch">??????????????????????<TextBox.InputScope>??????????????????????????<InputScope>??????????????????????????????<InputScope.Names>??????????????????????????????????<InputScopeName?NameValue="CurrencyChinese"/>??????????????????????????????</InputScope.Names>??????????????????????????</InputScope>??????????????????????</TextBox.InputScope>??????????????????</TextBox>????????????????????<TextBlock?Text="輸入電話號碼:"?Margin="0,15,0,0"?FontSize="{StaticResource?fontSize}"?/>??????????????????<TextBox?Name="txtPhoneNum"?FontSize="{StaticResource?fontSize}"?HorizontalAlignment="Stretch">??????????????????????<TextBox.InputScope>??????????????????????????<InputScope>??????????????????????????????<InputScope.Names>??????????????????????????????????<InputScopeName?NameValue="TelephoneNumber"/>??????????????????????????????</InputScope.Names>??????????????????????????</InputScope>??????????????????????</TextBox.InputScope>??????????????????</TextBox>????????????????????<TextBlock?Text="輸入URL:"?Margin="0,15,0,0"?FontSize="{StaticResource?fontSize}"?/>??????????????????<TextBox?Name="txtURL"?FontSize="{StaticResource?fontSize}"?HorizontalAlignment="Stretch">??????????????????????<TextBox.InputScope>??????????????????????????<InputScope>??????????????????????????????<InputScope.Names>??????????????????????????????????<InputScopeName?NameValue="Url"/>??????????????????????????????</InputScope.Names>??????????????????????????</InputScope>??????????????????????</TextBox.InputScope>??????????????????</TextBox>????????????????????<TextBlock?Text="輸入單個字符:"?Margin="0,15,0,0"?FontSize="{StaticResource?fontSize}"?/>??????????????????<TextBox?Name="txtChat"?FontSize="{StaticResource?fontSize}"?HorizontalAlignment="Stretch">??????????????????????<TextBox.InputScope>??????????????????????????<InputScope>??????????????????????????????<InputScope.Names>??????????????????????????????????<InputScopeName?NameValue="Chat"/>??????????????????????????????</InputScope.Names>??????????????????????????</InputScope>??????????????????????</TextBox.InputScope>??????????????????</TextBox>????????????????</StackPanel>??????????</ScrollViewer>??????</Grid>???????????????<!--<phone:PhoneApplicationPage.ApplicationBar>??????????<shell:ApplicationBar?IsVisible="True"?IsMenuEnabled="True">??????????????<shell:ApplicationBarIconButton?IconUri="/Images/appbar_button1.png"?Text="按鈕?1"/>??????????????<shell:ApplicationBarIconButton?IconUri="/Images/appbar_button2.png"?Text="按鈕?2"/>??????????????<shell:ApplicationBar.MenuItems>??????????????????<shell:ApplicationBarMenuItem?Text="菜單項?1"/>??????????????????<shell:ApplicationBarMenuItem?Text="菜單項?2"/>??????????????</shell:ApplicationBar.MenuItems>??????????</shell:ApplicationBar>??????</phone:PhoneApplicationPage.ApplicationBar>-->????</phone:PhoneApplicationPage>?? ?
當然了,這種限制并不能十分準確,所以在你應用程序中,確認的時候也應當對特定的數據類型進行多一次驗證。
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/songtzu/archive/2012/07/24/2607166.html
總結
以上是生活随笔為你收集整理的Windows Phone开发(13):如何规范用户的输入行为 转:http://blog.csdn.net/tcjiaan/article/details/7341513...的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。