文本框(TextBox)控件是表示一個可用於顯示和編輯單格式、多行文本的控件。TextBox控件經常使用於在表單中編輯非格式化文本,例如,若是一個表單要求輸入用戶姓名、電話號碼等,則可使用 TextBox 控件來進行文本輸入。控件的XAML語法以下:html
<TextBox .../>微信
TextBox的高度能夠是一行,也能夠包含多行。對於輸入少許純文本(如表單中的「姓名」、「電話號碼」等)而言,單行TextBox是最好的選擇。同時你也能夠建立一個使用戶能夠輸入多行文本的TextBox,例如,表單要求輸入較多的文字,可能須要使用支持多行文本的TextBox。設置多行文本的方法很簡單,將TextWrapping特性設置爲Wrap會使文本在到達TextBox控件的邊緣時換至新行,必要時會自動擴展TextBox控件以便爲新行留出空間,這點是和TextBlock控件同樣的。同時TextBox控件也能夠設置文字的相關屬性(FontFamily、FontSize、FontStyle、FontWeight)。下面咱們再來介紹TextBox控件中的一些特別的功能特性。app
(1)支持回車鍵換行測試
由於TextBox控件是一個文本輸入的控件,因此它除了對自動換行的支持以外,還此次還回車鍵換行的輸入。不過在默認的狀況下,TextBox控件是不支持回車鍵換行的,若是須要支持回車鍵換行,須要把把AcceptsReturn屬性設置爲true。spa
(2)鍵盤的類型code
因爲Windows Phone手機並不支持第三方的輸入法軟件,因此在文本框輸入的狀況下,只可以使用系統提供的輸入法和鍵盤類型。那麼TextBox控件是能夠經過InputScope屬性來設置在控件輸入信息的時候所提供的鍵盤類型,好比你的TextBox文本框只是要求用戶輸入手機號碼,那麼你經過設置InputScope="TelephoneNumber"來制定電話號碼的輸入鍵盤。關於鍵盤的類型能夠經過枚舉InputScopeNameValue來看到全部的鍵盤類型,包括有EmailSmtpAddress(郵件地址輸入)、Url(網址輸入)、Number(數字輸入)等等。若是使用C#代碼來設置TextBox控件的鍵盤類型,代碼的編寫會稍微麻煩一點,示例代碼以下所示:orm
textBox1.InputScope = new InputScope();htm
textBox1.InputScope.Names.Add(new InputScopeName() { NameValue = InputScopeNameValue.TelephoneLocalNumber });blog
(3)控件頭事件
一般咱們在建立一個輸入框的時候都須要在輸入框的上面添加相關的說明,好比「請輸入用戶名」等。那麼TextBox控件會經過Header屬性來直接支持添加這個控件頭的描述說明,簡化了控件的實現。Header屬性的默認樣式是跟系統的文本框的控件頭的樣式保持一致。
(4)操做事件
TextBox控件支持三個經常使用的操做事件,分別是TextChanged事件(TextBox控件文本信息的改變會觸發該事件)、SelectionChanged事件(TextBox控件選擇信息的改變會觸發該事件)、Paste事件(在TextBox控件中粘貼的操做會觸發該事件)。TextChanged事件一般會用來檢查用戶輸入信息的改變,而後再獲取控件的Text屬性的信息進行相關的操做。SelectionChanged事件也是相似的做用,不過SelectionChanged事件則是檢查用戶選擇的文本信息的改變,而後獲取控件的SelectedText屬性表示選擇的文本信息,若是沒有選擇文本信息,則SelectedText的值是空的字符串。當控件中發生粘貼操做的時候會觸發Paste事件,若是有一些信息的輸入是不容許粘貼的,能夠利用該事件來禁止粘貼的輸入操做。
下面給出文本框的示例:建立TextBox控件演示TextBox控件的鍵盤選擇,控件頭和操做事件的實現。
代碼清單4-3:文本框控件演示(源代碼:第4章\Examples_4_3)
MainPage.xaml文件主要代碼 ------------------------------------------------------------------------------------------------------------------ <StackPanel> <!--建立一個電話號碼的輸入文本框控件--> <TextBox InputScope="TelephoneNumber"> <TextBox.Header> 請輸入電話號碼: </TextBox.Header> </TextBox> <!--測試TextBox控件的相關操做事件--> <TextBox x:Name="TextBox1" TextWrapping="Wrap" AcceptsReturn ="true" Header="輸入信息:" SelectionHighlightColor="Red" TextChanged="TextBox1_TextChanged" SelectionChanged="TextBox1_SelectionChanged" Paste="TextBox1_Paste"/> <TextBlock x:Name="textBlock2" Text="操做信息:" FontSize="20"/> <TextBlock x:Name="textBlock1" TextWrapping="Wrap" FontSize="20"/> </StackPanel>
MainPage.xam.cs文件主要代碼 ------------------------------------------------------------------------------------------------------------------ // 文本的信息 string text = ""; // 選擇的文本信息 string selectedText = ""; // 是否發生粘貼 string pasteTest = ""; // 文本變化的事件 private void TextBox1_TextChanged(object sender, TextChangedEventArgs e) { text = TextBox1.Text; ShowInformation(); } // 文本選擇的事件 private void TextBox1_SelectionChanged(object sender, RoutedEventArgs e) { selectedText = TextBox1.SelectedText; ShowInformation(); } // 粘貼事件 private void TextBox1_Paste(object sender, TextControlPasteEventArgs e) { text = TextBox1.Text; selectedText = TextBox1.SelectedText; pasteTest = "產生了粘貼操做"; ShowInformation(); } // 操做信息展現 private void ShowInformation() { textBlock1.Text = "文本信息:「" + text + "」選擇的信息:「" + selectedText + "」粘貼的信息:「" + pasteTest + "」"; }
本文來源於《深刻淺出Windows Phone 8.1 應用開發》
WP8.1 Runtime文章列表:http://www.cnblogs.com/linzheng/p/3998037.html
源代碼下載:http://vdisk.weibo.com/s/zt_pyrfNHb99O
歡迎關注個人微博@WP林政 微信公衆號:wp開發(號:wpkaifa)
WP8.1技術交流羣:372552293