Windows Phone 7 - 扩展TextBox控件为数字输入文本框
fmms
13年前
<p>有一些信息的录入,比如电话号码,邮编等等的这些信息都只是需要输入数字,而Windows Phone 7里面的控件并没有只让输入数字的一个控件,那么要实现这样的一个控件就只能够手工地去扩展TextBox控件了。</p> <p>扩展一个控件的步骤:<br /> 1、定义一个类,这个类需要继承你要扩展的控件的类<br /> </p> <pre class="brush:c#; toolbar: true; auto-links: false;">public class NumericTextBox : TextBox</pre> <p></p> 2、在页面上添加扩展的控件的类的空间引用 <p></p> <p></p> <pre class="brush:xml; toolbar: true; auto-links: false;">xmlns:my="clr-namespace:WPNumericTextBox.Controls"</pre> <p></p> 3、调用控件 <p></p> <p></p> <pre class="brush:c#; toolbar: true; auto-links: false;"> NumericTextBox.cs using System; using System.Windows.Controls; using System.Windows.Input; namespace WPNumericTextBox.Controls { public class NumericTextBox : TextBox { //返回键和数字键 private readonly Key[] numeric = new Key[] {Key.Back, Key.NumPad0, Key.NumPad1, Key.NumPad2, Key.NumPad3, Key.NumPad4, Key.NumPad5, Key.NumPad6, Key.NumPad7, Key.NumPad8, Key.NumPad9 }; public NumericTextBox() { //将文本设置为 电话号码的文本输入模式 this.InputScope = new InputScope(); this.InputScope.Names.Add(new InputScopeName() { NameValue = InputScopeNameValue.TelephoneNumber }); } protected override void OnKeyDown(KeyEventArgs e) { //如果是数字键或者返回键则设置e.Handled = true; 表示事件已经处理 if(Array.IndexOf(numeric,e.Key) == -1) { e.Handled = true; } base.OnKeyDown(e); // important, if not called the back button is not handled } } }</pre> <p></p>