Data Input(数据输入)类在Silverlight的应用中是十分常见的。Data Input类组件共有三个组件构成:DescriptionViewer(描述显示)、Label(标签)以及ValidationSummary(验证信息汇总)。本文先为大家介绍这三个组件的基本特性,然后通过一个实例来讲述它们的基本使用方法。

一、DescriptionViewer(描述显示)

组件所在命名空间:

System.Windows.Controls

组件常用方法:

Refresh:从目标元素重新载入元标签信息。

组件常用属性:

Description:获取或设置由观看器(Viewer)显示的描述文本。

IsFocused:获取一个值用来表示DescriptionViewer的目标组件是否已获得焦点。

PropertyPath:获取或设置与DescriptionViewer相关联的目标组件在DataContext上的依赖属性的路径的值。

Target:获取或设置与DescriptionViewer相关联的目标组件。

二、Label(标签)

组件所在命名空间:

System.Windows.Controls

组件常用属性:

IsRequired:获取或设置一个值用来表示被绑定到目标域的属性值是否是必须的。

IsValid:获取一个值用来表示目标域数据是否有效。

PropertyPath:获取或设置与Label相关联的目标组件在DataContext上的依赖属性的路径的值。

Target:获取或设置与Label相关联的目标组件。

三、ValidationSummary(验证信息汇总)

组件所在命名空间:

System.Windows.Controls

组件常用属性:

Errors:获取出错信息集合。

ErrorStyle:获取或设置被用于错误项容器的样式。

Filter:获取或设置一个值用来表示那一种类型的错误将被显示。

FocusControlsOnClick:获取或设置一个值用来表示当一个错误消息被点击时焦点是否被设置在输入控件上。

HasDisplayedErrors:获取一个值用来表示ValidationSummary控件是否显示了错误。

HasErrors:获取一个值用来表示ValidationSummary控件是否有错误。

Header:获取或设置ValidationSummary控件的头部内容。

HeaderTemplate:获取或设置被用于显示头部内容的模板。

SummaryListBoxStyle:获取或设置位于ValidationSummary控件内部的用于显示错误的ListBox的样式。

Target:获取或设置将要在错误汇总中显示信息的组件。

组件常用事件:

FocusingInvalidControl:发生于错误汇总列表中的一个错误被点击时。

四、实例

注意:用VS调试时,要在菜单Debug->Exception...,去掉Common Language Runtime Exception前面的勾,不然会报错。

首先,创建一个名为Employees.cs的业务模型类。

Employees.cs文件代码:

using System;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Ink;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

using System.ComponentModel;

using System.ComponentModel.DataAnnotations;

using System.Text.RegularExpressions;

namespace SilverlightClient

{

public class Employees: INotifyPropertyChanged

{

private string _EmployeeID;

private string _EmployeeName;

private int _EmployeeAge;

public string EmployeeID

{

get

{

return _EmployeeID;

}

set

{

if (value != _EmployeeID)

{

Regex r = new Regex(@"^\(\d\d\d\) \d\d\d\d$");

Match m = r.Match(value);

if (!m.Success)

throw new Exception("输入的员工号格式不正确!\n请按(###) ####格式匹配输入。");

_EmployeeID = value;

OnPropertyChanged("EmployeeID");

}

}

}

public string EmployeeName

{

get

{

return _EmployeeName;

}

set

{

if (value != _EmployeeName)

{

if (value == String.Empty)

throw new Exception("该字段为必填字段!");

_EmployeeName = value;

OnPropertyChanged("EmployeeName");

}

}

}

public int EmployeeAge

{

get

{

return _EmployeeAge;

}

set

{

if (value != _EmployeeAge)

{

if (value < 18 || value > 60)

throw new Exception("输入的年龄范围有误(18-60)!\n请重新填写。");

_EmployeeAge = value;

OnPropertyChanged("EmployeeAge");

}

}

}

#region INotifyPropertyChanged Members

public event PropertyChangedEventHandler PropertyChanged;

protected virtual void OnPropertyChanged(string propName)

{

if (PropertyChanged != null)

{

PropertyChanged(this, new PropertyChangedEventArgs(propName));

}

}

#endregion

}

}

MainPage.xaml文件代码:

<UserControl

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

mc:Ignorable="d" xmlns:dataInput="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data.Input" x:Class="SilverlightClient.MainPage"

d:DesignWidth="320" d:DesignHeight="240">

<Grid x:Name="LayoutRoot" Width="320" Height="240" Background="White">

<dataInput:Label Height="23" HorizontalAlignment="Left" Margin="20,37,0,0" VerticalAlignment="Top" Width="48" Content="工号:" FontSize="13.333"/>

<dataInput:Label Height="23" HorizontalAlignment="Left" Margin="20,78,0,0" VerticalAlignment="Top" Width="48" Content="姓名:" FontSize="13.333"/>

<dataInput:Label HorizontalAlignment="Left" Margin="20,118,0,99" Width="48" Height="23" Content="年龄:" FontSize="13.333"/>

<TextBox x:Name="tbEmployeeID" Text="{Binding EmployeeID,Mode=TwoWay,ValidatesOnExceptions=true, NotifyOnValidationError=true}" Height="23" Margin="68,37,97,0" VerticalAlignment="Top" TextWrapping="Wrap" Width="155"/>

<TextBox x:Name="tbEmployeeName" Text="{Binding EmployeeName,Mode=TwoWay,ValidatesOnExceptions=true, NotifyOnValidationError=true}" Height="23" Margin="68,78,97,0" VerticalAlignment="Top" TextWrapping="Wrap" Width="155"/>

<TextBox x:Name="tbEmployeeAge" Text="{Binding EmployeeAge,Mode=TwoWay,ValidatesOnExceptions=true, NotifyOnValidationError=true}" Margin="68,118,97,99" TextWrapping="Wrap" Width="155" Height="23"/>

<dataInput:DescriptionViewer x:Name="dvEmployeeID" Height="23" Target="{Binding ElementName=tbEmployeeID}" HorizontalAlignment="Right" Margin="0,37,71,0" VerticalAlignment="Top" Width="23" Description="员工工号,输入格式(###) ####" FontSize="13.333"/>

<dataInput:DescriptionViewer x:Name="dvEmployeeName" Height="23" Target="{Binding ElementName=tbEmployeeName}" HorizontalAlignment="Right" Margin="0,78,71,0" VerticalAlignment="Top" Width="23" Description="输入员工姓名,非空" FontSize="13.333"/>

<dataInput:DescriptionViewer x:Name="dvEmployeeAge" Target="{Binding ElementName=tbEmployeeAge}" HorizontalAlignment="Right" Margin="0,118,70,99" Width="23" Height="23" Description="输入员工年龄(18-60)" FontSize="13.333"/>

<dataInput:ValidationSummary x:Name="vsEmployees" Height="73" Margin="20,0,24,8" VerticalAlignment="Bottom" Width="276"/>

</Grid>

</UserControl>

 

MainPage.xaml.cs文件代码:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Net;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Animation;

using System.Windows.Shapes;

namespace SilverlightClient

{

public partial class MainPage : UserControl

{

public Employees em = new Employees(){ EmployeeID ="(001) 1234", EmployeeName = "张三", EmployeeAge = 23};

public MainPage()

{

InitializeComponent();

this.Loaded += new RoutedEventHandler(MainPage_Loaded);

}

void MainPage_Loaded(object sender, RoutedEventArgs e)

{

DataContext = em;

}

}

}

最终效果图:

图一:DescriptionViewer组件显示


图二:出错信息和ValidationSummary组件

作者:Kinglee
文章出处:Kinglee’s Blog (http://www.cnblogs.com/Kinglee/)
版权声明:本文的版权归作者与博客园共有。转载时须注明本文的详细链接,否则作者将保留追究其法律责任。

转载于:https://www.cnblogs.com/Kinglee/archive/2009/09/11/1565045.html

有关Data Input类组件的研究——Silverlight学习笔记[26]相关推荐

  1. 有关DataVisualization类组件的研究——Silverlight学习笔记[43]

    Data Visualization类组件以直观的图表方式显示数据的分布,能够让我们更好地分析各数据的内在联系.本文主要向大家介绍该类组件的基本特性以及使用实例. 一.基本特性介绍 1.chart组件 ...

  2. 有关Silverlight TabControl组件的研究——Silverlight学习笔记(5)

    说明:通过对于Silverlight TabControl组件及其子组件TabItem的学习,您将了解到该组件能够有效充分地利用屏幕空间,并且能展示大量的数据内容,使得应用程序的内容布局更趋合理. [ ...

  3. 有关Rating组件的研究——Silverlight学习笔记[41]

    我们经常能在网上发现为新闻.博客文章.图片或是电影视频的评分功能.在Silverlight中,使用Rating组件便能助我们完成以上的功能.本文将为大家介绍该组件的基础知识以及自定义应用方面等方面的内 ...

  4. 有关Accordion组件的研究——Silverlight学习笔记[27]

    Accordion组件在开发中常用于信息的分类显示.本文将为大家介绍该组件的特性以及通过一个实例讲述该组件的基本运用. 组件所在命名控件: System.Windows.Controls 组件常用方法 ...

  5. 有关Silverlight浮动窗体组件的研究——Silverlight学习笔记(3)

    说明:Silverlight的ChildWindow组件给我们的开发带来了便利,比如说我们可以用它开发自定义对话框等.然而,这同时也带来了这样一个问题,ChildWindow组件只能以Modal Wi ...

  6. 有关Expander组件的研究——Silverlight学习笔记[33]

    Expander组件常用做边栏目录的分类,比如Windows中"我的文档"的侧边栏.本文将为大家介绍该组件的基本特性以及实际应用. 组件所在命名空间: System.Windows ...

  7. 有关Navigation的研究——Silverlight学习笔记[29]

    在Silverlight的程序设计中经常需要在多个XAML页面之间进行切换,以进行不同的功能操作.Silverlight为我们提供了一组控件以实现这一功能.本文将为大家介绍如何在Silverlight ...

  8. 强大的DataGrid组件[4]_实现CURD[上]——Silverlight学习笔记[12]

    在本教程中,主要为大家讲述如何使用DataGrid来对后台数据库进行CURD操作.由于CURD操作是与数据库交互中最为常用的,因此掌握其使用方法就显得尤为必要.本教程将使用Linq to SQL Cl ...

  9. SilverLight学习笔记--如何在xaml文件中操作用户在后台代码定义的类(2)--示例篇:创建一个登录控件(原创)(转载本文请注明出处)...

    本文将示例如何运用前篇所写知识来建立一个用户自定义的登录控件.此控件界面非常简单,主要涉及的知识点是:   如何创建用户控件(包括对此控件的自定义事件和属性的编写,此处我们将创建一个名为LoginBo ...

最新文章

  1. 弄了个调试呼叫中心用的小机器
  2. opencv-python图像处理之让你的照片变旧
  3. 软件测试工程师们,今年的年终奖你想拿多少?
  4. 负载均衡和CDN技术
  5. REST /使用提要发布事件
  6. EE Servlet 3:使用会话和过滤器开发用户登录
  7. Kotlin学习笔记 第二章 类与对象 第九节 泛型
  8. 实例开发:ASP.NET创建网络相册
  9. 【转】LiveWriter插入高亮代码插件介绍 基于SyntaxHighighter
  10. 人脸管理服务器修改ip,人脸库管理【可视化】 增/删/改/查 全不怕
  11. java 浏览器设置字体大小_css 字体设置(不同浏览器设置效果)
  12. P3369 普通平衡树模板 treap
  13. Freeswitch智能语音开发之TTS
  14. 如果推动世界进步的是魔法,世界将会怎样?
  15. 磨金石教育||商业插画的发展现状如何?学习插画可以月入过万吗?
  16. iphone与android共享位置,在iPhone或Android上分享你的位置
  17. SAP 启动物料帐后不可更改物料价格的处理方法
  18. 推荐一些国内的jQuery CDN免费服务[转]
  19. 愚弄了上万人,AI开始文化入侵了?道翰天琼认知智能机器人平台API接口大脑为您揭秘。
  20. COI 2020 Semafor(矩阵乘法+优化)

热门文章

  1. android 设备标识
  2. 两个iOS应用之间的跳转
  3. ADO.NET 之 一
  4. DAO基本登录(1)
  5. 无线网络实验之五:无线路由器防火墙设置
  6. 大数据元数据管理系统功能有哪些
  7. 数据可视化过程中常见的错误类型
  8. 如何针对大数据进行分析
  9. 如何提升数据分析的效率
  10. uc浏览器手机模拟_UC、华为、OPPO等8款手机浏览器被重点集中整治!原因是.........