SilverLight学习笔记--实际应用(一)(8):手把手建立一个Silverlight应用程序之应用自定义TextBox控件

   本步很简单,就是在年龄输入栏中引入我们自定义的TextBox控件,使得此栏在录入数字时只接受正整数,如果用户想键入其它字符则TextBox不接受。这样就减轻了数据校验的压力,多了一层防护。
   控件的创建我们在这里不再重复,请参见SilverLight学习笔记--利用DependencyProperty依赖属性创建自备录入过滤功能的TextBox控件
   我们需要做的就是在项目SLApplicationDataTest中引入我们创建的自定义控件,如图:
                        SilverLight学习笔记--实际应用(一)(8):手把手建立一个Silverlight应用程序之应用自定义TextBox控件 
修改我们的Page.xaml文件,在头部引入:

 xmlns:mytxtbxsrc = " clr-namespace:SLFilterTextBox;assembly=SLFilterTextBox "

找到Age段,改为:

  < data:DataGridTemplateColumn Header = " Age " >
                    
< data:DataGridTemplateColumn.CellTemplate  >
                        
< DataTemplate >
                                
< Border Background = " {Binding Validator.InvalidAge, Converter={StaticResource myBrushConvert}} "
                                        ToolTipService.ToolTip
= " {Binding Path=Validator, Converter={StaticResource myErrMsgConvert}, ConverterParameter=Age} " >
                                    
< TextBlock  Text = " {Binding Age} " ></ TextBlock >
                                
</ Border >
                        
</ DataTemplate >
                    
</ data:DataGridTemplateColumn.CellTemplate >
                    
< data:DataGridTemplateColumn.CellEditingTemplate >
                        
< DataTemplate >
                                
< mytxtbxsrc:MyFilterTextBox x:Name = " myFilterTBAge "  Text = " {Binding Age , Mode=TwoWay, NotifyOnValidationError=True,  ValidatesOnExceptions=True} "
                                     Background
= " {Binding Validator.InvalidAge, Converter={StaticResource myBrushConvert}} "
                                                             Loaded
= " myFilterTBAge_Loaded " >
                                
</ mytxtbxsrc:MyFilterTextBox >
                            
</ DataTemplate >
                    
</ data:DataGridTemplateColumn.CellEditingTemplate >
 
</ data:DataGridTemplateColumn >

  Page.xaml全部代码如下:

Code

修改后台代码,Page.xaml.cs如下:
引入空间:

using  SLFilterTextBox;

定义myFilterTBAge_Loaded事件处理程序:

         private   void  myFilterTBAge_Loaded( object  sender, RoutedEventArgs e)
        {
            ((MyFilterTextBox)sender).MyFilter 
=  SLFilterTextBox.TextBoxFilterType.PositiveInteger;  // 设定MyFilterTextBox控件的过滤属性
        }

 Page.xaml.cs全部代码如下:

Code

生成项目后运行,然后在Age框内输入数字,可以看到它只接受正整数,录入其它的字符均无反应。
SilverLight学习笔记--实际应用(一) 源代码下载


前往:Silverlight学习笔记清单
本文程序在Silverlight2.0和VS2008环境中调试通过。本文参照了部分网络资料,希望能够抛砖引玉,大家共同学习。
(转载本文请注明出处)

你可能感兴趣的:(silverlight)