silverlight 4 数据验证
当用户提交数据时,我们必须对用户所填写的数据合法性进行验证。而silverlight4的数据验证功能有了比较简单的实现方法,以下是我实现一个示例:一个输入用户年龄的textbox,当用户输入为负数时会提示有错误,并不允许提交。
1.新建一个silverlight 4 项目。
2.mainpage.xaml里输入以下xaml:
添加了一个textbox和一个button控件,button控件为提交测试功能,textbox为数据验证测试功能
<Grid x:Name="LayoutRoot" Background="White">
<TextBox Height="23" Grid.Row="1" HorizontalAlignment="Left" Margin="114,98,0,0" Name="_txtAge" VerticalAlignment="Top" Width="120"
Text="{Binding Age,Mode=TwoWay,ValidatesOnDataErrors=True, ValidatesOnExceptions=True}"/>
<Button Content="提交" Height="23" HorizontalAlignment="Left" Margin="117,166,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>
3.新建一个类用作数据类型及定义验证:
//继承于IDataErrorInfo
public class Person : IDataErrorInfo
{
//年龄字段
public int Age { get; set; }
#region IDataErrorInfo Members
//返回来的错误信息(供判断用户数据是否合法使用)
public string Error
{
get
{
if (Age < 0)
{
return "err";
}
else { return null; }
}
}
//错语提示(用户数据错误时作出的相应提示)
public string this[string columnName]
{
get
{
switch (columnName)
{
case "Age":
if (Age < 0)
{
return "年龄必须大于 0";
}
else
{
goto default;
}
default:
return null;
}
}
}
#endregion
}
4.MainPage.xaml.cs文件:定义数据绑定及提交点击事件:
public partial class MainPage : UserControl
{
//初始一个person类作为数据源
private Person _person;
public MainPage()
{
InitializeComponent();
//实例化person
_person = new Person() { Age = 20 };
//让textbox与person数据源绑定
_txtAge.DataContext = _person;
//注册button提交点击事件
button1.Click +=new RoutedEventHandler(button1_Click);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
//判断数据验证是否通过
if ((_txtAge.GetBindingExpression(TextBox.TextProperty).DataItem as Person).Error == null)
{
MessageBox.Show("ok");
}
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?