台风查询系统 silverlight视频教程需要怎么实现

您所在的位置: &
Silverlight数据验证实现技巧分享
Silverlight数据验证实现技巧分享
Silverlight数据验证的实现对于刚刚学习Silverlight开发工具不久的朋友来说可能不太好掌握。希望这篇文章可以为大家带来一些帮助。
开发工具对于编程人员来说是一个非常有用的多媒体处理平台。其中有很多功能与应用技巧值得我们去深入的研究。在这里我们就为大家介绍一下有关Silverlight数据验证的实现方法。
首先我们编写一个简单的业务类,由于数据绑定验证只能在双向绑定中,所以这里需要实现INotifyPropertyChanged接口,如下Silverlight数据验证代码所示,在set设置器中我们对于数据的合法性进行检查,如果不合法则抛出一个异常:
///&Author:TerryLee &
///&/Terrylee &
public&class&Person&:&
INotifyPropertyChanged &
public&event&PropertyChanged
EventHandler&PropertyC &
private&int&_ &
public&int&Age &
get&{&return&_&} &
if&(value&& &) &
throw&new&Exception(&年龄输入不合法!&); &
_age&=&value; &
if&(PropertyChanged&!=&null) &
PropertyChanged(this,&new&
PropertyChangedEventArgs(&Age&)); &
private&String&_name&=&&Terry&; &
public&String&Name &
get&{&return&_&} &
if&(value.Length&& &) &
throw&new&Exception(&姓名输入不合法!&); &
_name&=&value; &
if&(PropertyChanged&!=&null) &
PropertyChanged(this,&new&
PropertyChangedEventArgs(&Name&)); &
public&void&NotifyPropertyChanged
(String&propertyName) &
if&(PropertyChanged&!=&null) &
PropertyChanged(this,&new&Property
ChangedEventArgs(propertyName)); &
编写Silverlight数据验证,如下代码所示,设置NotifyOnValidationError和ValidatesOnExceptions属性为true,并且定义BindingValidationError事件:
&!-- &/Terrylee &--&&&Orientation=&Horizontal&&Margin=&10&&&&x:Name=&txtName&&Width=&200&&Height=&30&&Text=&{Binding&Name,Mode=TwoWay, &NotifyOnValidationError=true, &ValidatesOnExceptions=true}& &BindingValidationError=&txtName_BindingValidationError&&&/TextBox&&&x:Name=&messageName&&/my:Message&&/StackPanel&&&Orientation=&Horizontal&&Margin=&10&&&&x:Name=&txtAge&&Width=&200&&Height=&30&&Text=&{Binding&Age,Mode=TwoWay, &NotifyOnValidationError=true, &ValidatesOnExceptions=true}& &BindingValidationError=&txtAge_BindingValidationError&&&/TextBox&&&x:Name=&messageAge&&/my:Message&&/StackPanel&
实现BindingValidationError事件,在这里可以根据ValidationErrorEventAction来判断如何进行处理,在界面给出相关的提示信息等,如下Silverlight数据验证代码所示:
///&&&///&Author:TerryLee &///&/Terrylee &///&&/summary&void&txtAge_BindingValidationError(object&sender,&ValidationErrorEventArgs&e) &{ &if&(e.Action&==&ValidationErrorEventAction.Added) &{ &messageAge.Text&=&e.Error.Exception.M &messageAge.Validation&=&false; &} &else&if&(e.Action&==&ValidationErrorEventAction.Removed) &{ &messageAge.Text&=&&年龄验证成功&; &messageAge.Validation&=&true; &} &}&
通过这样的方式,我们就可以实现Silverlight数据验证。
【责任编辑: TEL:(010)】
关于的更多文章
Silverlight 是一种新的 Web 呈现技术,能在各种平台上运行。借
本次的专刊为大家提供了Oracle最新推出的Java SE 8详细的开发教程,从解读到探究Java 8最新
IE浏览器不支持很多CSS属性是出了名的,即便在支持的
又是一周匆匆而过。上周五、周六两天,2013年51CTO云
十一归来,貌似大家都没有什么劲头。本周五,为期两天
本书全面、深入地介绍了网络应用技术,主要内容包括:RMS权限管理服务、Exchange邮件服务、LCS即时消息服务、WSUS系统更新服务、
51CTO旗下网站帮助企业打造成功软件!
热门搜索:
如何在Silverlight里实现隐式样式
如何在Silverlight里实现隐式样式
| 作者:慧都控件网 |
14:30:38| 阅读 0次
概述:WPF 中,我们可以方便的在全局范围定义一个样式,就可以应用到所有这种类型的对象,这就是所谓的隐式样式。但是在 Silverlight 里没有办法这样做。我们必须手工对每一个需要设置样式的控件添加 Style="{StaticResource someStyle}" 这样的语句,挨个设置,非常麻烦。好在 Silverlight Toolkit 里提供了一个类似的实现,叫做 ImplicitStyleManager (隐式样式管理器,可以简称 ISM)。
中,我们可以方便的在全局范围定义一个样式,就可以应用到所有这种类型的对象,这就是所谓的隐式样式。但是在 Silverlight
里没有办法这样做。我们必须手工对每一个需要设置样式的控件添加 Style=&{StaticResource someStyle}&
这样的语句,挨个设置,非常麻烦。好在 Silverlight Toolkit 里提供了一个类似的实现,叫做
ImplicitStyleManager (隐式样式管理器,可以简称 ISM)。
  在 WPF 中,我们可以方便的在全局范围定义一个样式,就可以应用到所有这种类型的对象,这就是所谓的隐式样式(implicit Style),比如:
&Window&x:Class=&WpfImplicitStyle.Window1&
xmlns=&/winfx/2006/xaml/presentation&
xmlns:x=&/winfx/2006/xaml&
Title=&Window1&&Height=&300&&Width=&300&&
&Grid.Resources&
&!--&针对一种类型设置全局样式&--&
&Style&TargetType=&Button&&
&Setter&Property=&Background&&Value=&AliceBlue&&/&&
&/Grid.Resources&
&StackPanel&
&Button&Button&a&/Button&
&Button&Button&b&/Button&
&/StackPanel&
  这样之后,两个按钮就都变成了浅蓝色的背景。
  但是在 Silverlight 里没有办法这样做。我们必须手工对每一个需要设置样式的控件添加 Style=&{StaticResource someStyle}& 这样的语句,挨个设置,非常麻烦。
  好在 Silverlight Toolkit 里提供了一个类似的实现,叫做 ImplicitStyleManager (隐式样式管理器,可以简称 ISM)。
  该类的使用方法,是在某个根元素上设置一个附加属性(Attached Property),然后,该元素下属的视觉树里符合特定类型的子元素的样式,就可以被自动应用隐式样式了。
  例子如下:
&UserControl&x:Class=&ImplicitStyleTest.Page&
xmlns=&/winfx/2006/xaml/presentation&&
xmlns:x=&/winfx/2006/xaml&&
Width=&400&&Height=&300&
xmlns:theming=&clr-namespace:Microsoft.Windows.Controls.Tassembly=Microsoft.Windows.Controls.Theming&&
&Grid&x:Name=&LayoutRoot&&Background=&White&&
&Grid.Resources&
&Style&TargetType=&Button&&
&Setter&Property=&Background&&Value=&AliceBlue&&/&
&/Grid.Resources&
&!--&在根元素上设置一次就可以了&--&
&StackPanel&theming:ImplicitStyleManager.ApplyMode=&Auto&&
&Button&Content=&Button&a&&&/Button&
&Button&Content=&Button&b&&&/Button&
&/StackPanel&
&/UserControl&
  运行一下例子试试就会发现,两个按钮的样式都被设置了,这样就实现了类似 WPF 里的隐式样式行为。
  在这个例子里可以看到,ApplyMode 属性被设置成了 Auto. 其实它一共有3个可选值,分别代表如下含义:
  1. Auto
  每当 layout updated 的时候,ISM 会重新应用隐式样式。在这种模式下如果元素在以后被动态的加入到视觉树中, 它们将被应用隐式样式。
需要注意的是,LayoutUpdated 事件发生的非常频繁,并且不光是当你添加元素后才发生。而我们又没有类似 ItemAddedToTree
的事件,如果视觉树比较大的话,ISM
遍历它的时候就会花费比较多的时间,这可能给性能带来一定的影响。但是为了方便,这里只好做一些折中的权衡,牺牲一点性能。如果视觉树很大的时候,可以考
虑改用 OneTime 模式。
  2. OneTime
  仅在第一次加载时起作用,对后面动态加到 visual tree 里的元素不起作用。
有时候,你的视觉树很大,所以你不考虑用 Auto 模式。这时候你可以用 OneTime
模式一次性应用样式;同时,需要在添加新节点之后,在代码里手工调用 ISM 的 Apply 方法,这样可以重新应用一次样式。这样的办法可以避免
Auto 模式的一些性能损失。
  3. None
  效果跟没设置 ApplyMode 属性一样。
  了解了 ISM 如何使用,我们来看看它是怎么实现的。
  我们知道,Silverlight 元素里面的 Style 在运行时只能被设置一次,否则就会出错,ISM 也不例外,也要受这个制约。
  ISM 的实现原理大致如下:
  1. 定义一个叫做 ApplyMode 的附加属性(Attached Property),提供给需要设置样式的&根&元素使用。
而我们知道,附加属性可以在 xaml
里被设置,这就像上面的例子里所写的那样;同时,它有一个最大的好处,就是可以定义属性改变时触发的回调函数(注册时定义在
PropertyMetadata 里面)。这样,当我们在代码里设置了 ApplyMode 后,ISM 就能触发这个回调函数进行处理了。
  2. 在这个回调函数中,注册元素的 LayoutUpdated 事件处理函数,这样,在该元素不管因为什么原因更新其 layout 的时候,就能够得到通知。
这里最巧妙的地方是:将元素 LayoutUpdated 事件的处理委托以依赖属性(DependencyProperty) 的形式存在该元素自身的属性中,这样就省去了自行管理很多 event handler 的烦恼了。。。依赖属性真的是个好东西啊!
///&&summary&
///&ApplyModeProperty&property&changed&handler.
///&&/summary&
///&&param&name=&dependencyObject&&
FrameworkElement&that&changed&its&
///&ApplyMode.&/param&
///&&param&name=&eventArgs&&Event&arguments.&/param&
private&static&void&OnApplyModePropertyChanged
(DependencyObject&dependencyObject,
&DependencyPropertyChangedEventArgs&eventArgs)
FrameworkElement&element&=&dependencyObject&as&FrameworkE
if&(element&==&null)
throw&new&ArgumentNullException(&dependencyObject&);
ImplicitStylesApplyMode&oldMode&=&
(ImplicitStylesApplyMode)eventArgs.OldV
ImplicitStylesApplyMode&newMode&=
&(ImplicitStylesApplyMode)eventArgs.NewV
ImplicitStyleManager.SetHasBeenStyled(element,&false);
EventHandler&eventHandler&=
&ImplicitStyleManager.GetLayoutUpdatedHandler(element);
//&If&element&is&automatically&styled&(once&or&always)&attach&event&
//&handler.
if&((newMode&==&ImplicitStylesApplyMode.Auto&||&
newMode&==&ImplicitStylesApplyMode.OneTime)
&&&oldMode&==&ImplicitStylesApplyMode.None)
if&(eventHandler&==&null)
eventHandler&=
(sender,&args)&=&
ImplicitStyleManager.PropagateStyles(element,&false);
ImplicitStyleManager.SetLayoutUpdatedHandler(element,&eventHandler);
element.LayoutUpdated&+=&eventH
else&if&((oldMode&==&ImplicitStylesApplyMode.Auto&||&
oldMode&==&ImplicitStylesApplyMode.OneTime)
&&&newMode&==&ImplicitStylesApplyMode.None)
if&(eventHandler&!=&null)
element.LayoutUpdated&-=&eventH
ImplicitStyleManager.SetLayoutUpdatedHandler(element,&null);
  3. 在上述 LayoutUpdated 的事件处理函数中,遍历控件的视觉树,对符合条件的元素设置 Style(也只能设置一次)。
这里值得一说的是遍历树的代码技巧,为了避免递归或者类似方法遍历树造成的开销,这里实际使用了一种很巧妙的 Stack 来访问树节点。并且,在所有需要遍历的地方,尽可能的使用了 yield return, 以一种函数式编程的写法来延迟实际对节点的操作。
  具体代码不细细解释了,这里把 MS 的代码贴来仅供欣赏一下 Functional Programming,有兴趣的朋友可以自己研究:
///&&summary&
///&This&method&propagates&the&styles&in&the&resources&associated&with
///&a&framework&element&to&its&descendents.&This&results&in&a&&
///&style&inheritance&that&mimics&WPF's&behavior.
///&&/summary&
///&&param&name=&element&&The&element&that&will&have&its&styles&
///&propagated&to&its&children.&/param&
///&&param&name=&recurse&&Whether&to&recurse&over&styled&elements&that
///&are&set&to&OneTime&and&have&already&been&styled.&/param&
private&static&void&PropagateStyles(FrameworkElement&element,&bool&recurse)
BaseMergedStyleDictionary&initialDictionary&=
&GetMergedStyleDictionary(element);
//&Create&stream&of&elements&and&their&base&merged&style&
//&dictionaries&by&traversing&the&logical&tree.
IEnumerable&Tuple&FrameworkElement,&BaseMergedStyleDictionary&&&
elementsToStyleAndDictionaries&=
FunctionalProgramming.Traverse(
new&Tuple&FrameworkElement,&BaseMergedStyleDictionary&
(element,&initialDictionary),
(elementAndDictionary)&=&&
elementAndDictionary
.GetLogicalChildrenDepthFirst()
.Select(childElement&=&&
new&Tuple&FrameworkElement,&BaseMergedStyleDictionary&(
childElement,&
new&MergedStyleResourceDictionary(
ImplicitStyleManager.GetExternalResourceDictionary(childElement)
&childElement.Resources,
elementAndDictionary.Second))),
(elementAndDictionary)&=&&recurse&||
(ImplicitStyleManager.GetApplyMode
(elementAndDictionary.First)&!=
&ImplicitStylesApplyMode.OneTime&||
!ImplicitStyleManager.GetHasBeenStyled(elementAndDictionary.First)));
foreach&(Tuple&FrameworkElement,&BaseMergedStyleDictionary&&
elementToStyleAndDictionary&in&elementsToStyleAndDictionaries)
FrameworkElement&elementToStyle&=&
elementToStyleAndDictionary.F
BaseMergedStyleDictionary&styleDictionary&=
&elementToStyleAndDictionary.S
bool&styleApplied&=&
if&(elementToStyle.Style&==&null)
Style&style&=&styleDictionary[GetStyleKey(elementToStyle)];
if&(style&!=&null)
elementToStyle.Style&=&
styleApplied&=&
if&(ImplicitStyleManager.GetApplyMode(elementToStyle)&==&
ImplicitStylesApplyMode.OneTime&&&
&(VisualTreeHelper.GetChildrenCount(elementToStyle)&&&0&||&styleApplied))
ImplicitStyleManager.SetHasBeenStyled(elementToStyle,&true);
本站文章除注明转载外,均为本站原创或翻译
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果
转载请注明:文章转载自:慧都控件网 []
本文地址:实现Silverlight自定义载入动画的方法(附源码)
首先介绍一下载入动画的特性:载入动画的界面用XAML来构造。载入动画发生在XAP文件被下载之前,因此,它必须独立于XAP文件;载入时,系统还没有能够创建SLR运行的环境,因此无法使用C#或者VB.NET等托管代码。 由于载入动画的特别,使他无法像其它silverlight页面一样构造。创建自定义载入动画需要三样东西:XAML、javascrip
    首先介绍一下载入动画的特性:载入动画的界面用XAML来构造。载入动画发生在XAP文件被下载之前,因此,它必须独立于XAP文件;载入时,系统还没有能够创建SLR运行的环境,因此无法使用C#或者VB.NET等托管代码。
  由于载入动画的特别,使他无法像其它silverlight页面一样构造。创建自定义载入动画需要三样东西:XAML、javascript和Silverlight参数。
  下面分别来介绍,先看例子:
&&&&& &很简单的例子,但足以说明问题。只要明白了其中的原理,就能创作出更酷的动画。
  另一个例子LoadingDemo2(只附源码,不再讲解):
  先说说XAML:
  XAML用来构成载入动画的界面,它不能关联代码文件,只能是纯粹的Grid或Canvas面板。
  我的代码:
&Grid&xmlns=&/winfx/2006/xaml/presentation&
xmlns:x=&/winfx/2006/xaml&&xmlns:System=&clr-namespace:Sassembly=mscorlib&&
&&&&&&&&&TextBlock&x:Name=&process&&Margin=&0&&TextWrapping=&Wrap&&Text=&220%&&FontSize=&253.333&&FontFamily=&Arial&Black&&HorizontalAlignment=&Center&&VerticalAlignment=&Center&/&
  很简单,只有一个TextBlock。但要强调的是,textblock的HorizontalAlignment、 VerticalAlignment属性要居中,Grid的width、height属性要为自动(Canvas面板 貌似不行),这样载入动画才会显示在浏览器中央。
  接下来轮到javascript了:
  他的作用是代替C#或者VB.NET等托管代码来处理载入进度信息。为此,我们在包含有Silverlight的HTML页面中定义一个函数:
&script&type=&text/javascript&&
&&&&&&&&function&onSourceDownloadProgressChanged(sender,&eventArgs)&{
&&&&&&&&&&&&var&size&=&window.innerHeight&/&2&/&1.3;
&&&&&&&&&&&&sender.findName(&process&).FontSize&=&
&&&&&&&&&&&&sender.findName(&process&).Text&=&Math.round((eventArgs.progress&*&100))&+&&%&;
&&&&/script&
  这里,我们通过findName来获得XAML中创建的控件,然后,通过eventArgs.progress来计划出下载量,并且对process.Text进行调整。并且根据浏览器窗口大小动态设置文本的字号。
  最后,我们通过参数,把自定义载入动画的XAML和javascript代码添加到Silverlight对象中:
&object&id=&silverlight&&data=&data:application/x-silverlight-2,&&type=&application/x-silverlight-2&&width=&100%&&height=&100%&&
&&&&&&&&&&&&&&&&&&&param&name=&initParams&&value=&width=100,height=100&&&id=&values&/&
&&&&&&&&&&&&&&&&&&&param&name=&source&&value=&ClientBin/LoadingDemo.xap&/&
&&&&&&&&&&&&&&&&&&&param&name=&onError&&value=&onSilverlightError&&/&
&&&&&&&&&&&&&&&&&&&param&name=&background&&value=&white&&/&
&&&&&&&&&&&&&&&&&&&param&name=&minRuntimeVersion&&value=&4.0.50401.0&&/&
&&&&&&&&&&&&&&&&&&&param&name=&autoUpgrade&&value=&true&&/&
&&&&&&&&&&&&&&&&&&&param&name=&splashscreensource&&value=&Process.xaml&&/&
&&&&&&&&&&&&&&&&&&&param&name=&onsourcedownloadprogresschanged&&value=&onSourceDownloadProgressChanged&&/&
&&&&&&&&&&&&&&&&&&&a&href=&/fwlink/?LinkID=149156&v=4.0.50401.0&&style=&text-decoration:none&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&img&src=&/fwlink/?LinkId=161376&&alt=&获取&Microsoft&Silverlight&&style=&border-style:none&/&
&&&&&&&&&&&&&&&&&&&/a&
&&&&&&&&&&&&&/object&
  亮点自己找(第8和第9行)。value=&Process.xaml& 就是指定上述XAML文件的地址。这个文件不用添加到项目,只放到项目文件夹里就行。
  总而言之,自定义载入动画的精髓就在于用javascript来操纵XAML界面。只要掌握了这一点,剩下的就是充分发挥想象力,调动体内的艺术细胞来创造优秀的作品了。
  嗯,就这些了,实在不明白的可以下载我的源代码看看。最后提醒一下,太小的silverlight是不会显示加载动画的。
------分隔线----------------------------
来自 Microsoft开源项目Microsoft Health通用用户界面 通过该项目微软提供很多标准控...
在Silverlight相关技术论坛经常会看到Silverlight部署后,客户端无法更新本地XAP文件...
上一篇曾提及xaml中,每个对象元素的声明是对.NET类进行一次实例化操作。xaml作为声明...
在上几篇Silverlight Navigation导航框架教程中,主要介绍了Silverlight Navigation导...
在Silverlight实例教程 - 理解Navigation导航框架Frame类 介绍了Silverlight Navigati...
通过“Navigation导航框架开篇”的介绍,可以了解到Silverlight导航框架可被应用于多...SilverLight使用WCF RIA SERVICE实现对数据库的操作 (添加,删除,更新)
SilverLight搭建WCF聊天室详细过程 系列文章为大家演示了如何使用SilverLight搭建WCF即时通讯系统过程,多人视频正在开发中,我会持续更新这个系列,以后几篇我会对群里提出最多的问题进行解答并给出设计思路,WCF和IIS配置已经包含在此系列,希望各位朋友在提问前先找找前面的帖子,QQ群:.NET集中营,位置已经不
    SilverLight搭建WCF聊天室详细过程 系列文章为大家演示了如何使用SilverLight搭建WCF即时通讯系统过程,多人视频正在开发中,我会持续更新这个系列,以后几篇我会对群里提出最多的问题进行解答并给出设计思路,WCF和IIS配置已经包含在此系列,希望各位朋友在提问前先找找前面的帖子,QQ群:.NET集中营,位置已经不多,群里高手很多,而且比较有开源精神,我是营长,有问题大家可以在博客园留言或者进营!
  上一节为大家介绍了SilverLight连接数据库的基本方法和读取数据,这节我继续把对数据的添加,删除,以及更新给大家做个演示,我们还是依托GridView控件继续演示,在上一节我们已经看到了数据的显示,GridView的强大功能允许我们直接在控件上编辑,而不必每次刷新。
&Grid&x:Name=&LayoutRoot&&Background=&White&&
&&&&&&&&&sdk:DataGrid&AutoGenerateColumns=&True&&Height=&297&&HorizontalAlignment=&Left&&Margin=&10,10,0,0&&Name=&daDisplay&&VerticalAlignment=&Top&&Width=&578&&RowEditEnded=&daDisplay_RowEditEnded&&
&&&&&&&&&/sdk:DataGrid&
&&&&&&&&&Button&Content=&删除&&Height=&23&&HorizontalAlignment=&Left&&Click=&btDel_Click&&Margin=&86,323,0,0&&Name=&btDel&&VerticalAlignment=&Top&&Width=&75&&/&
&&&&&&&&&Button&Content=&添加&&Height=&23&&HorizontalAlignment=&Left&&Click=&btAdd_Click&&&Margin=&178,323,0,0&&Name=&btAdd&&VerticalAlignment=&Top&&Width=&75&&/&
&&&&&/Grid&
  前台代码主要添加了DataGrid的RowEditEnded事件,这个事件在编辑行或者单元格时发生,那么我们就可以在编辑结束后保存数据:
  1.修改更新
private&void&daDisplay_RowEditEnded(object&sender,&DataGridRowEditEndedEventArgs&e)
&&&&&&&&&&&&mitEdit(DataGridEditingUnit.Row,&true);
&&&&&&&&&&&&domain.SubmitChanges();
  domain是我上节定义的操作数据库类,早晨一直在测试这个事件,一开始使用RowEditing事件发现会产生死循环,每次执行完CommitEdit()都会重新激活这个事件,产生的原因是RowEditing在编辑结束后发生,而CommitEdit()是把所做更改提交到数据源,然后结束编辑,这就引发了RowEditing事件的再次发生,从而产生死循环,这里大家引以为鉴。
  domain.SubmitChanges()提交更新到数据库,操作类会为我们执行写入步骤。
  2:删除
  大家看到上面代码中我已经添加了删除按钮并定义了单击事件,下面给出删除代码:
private&void&btDel_Click(object&sender,&RoutedEventArgs&e)
&&&&&&&&&&&&domain.Accounts_Users.Remove(daDisplay.SelectedItem&as&Accounts_Users);
&&&&&&&&&&&&domain.SubmitChanges();
  首先从数据源中删除选中要删除的行,大家不必再考虑需不需要单独删除GridView中的行,或者重新绑定,在SilverLight中已经不存在Asp.net这种诟病,当数据源数据更改时,操作类会自动更新绑定对象。
  3.添加
  在已经定义好的添加按钮单击事件中,添加如下语句:
private&void&btAdd_Click(object&sender,&RoutedEventArgs&e)
&&&&&&&&&&&&Accounts_Users&user&=&new&Accounts_Users();
&&&&&&&&&&&&domain.Accounts_Users.Add(user);
  上面提到只要数据源改变,操作类就会刷新绑定到它上面的数据源,所以我们的思路就是只要把要新添加的行以数据库表抽象对象的形式添加到数据源,此时DataGrid上就会出现新行,再由用户自行添加数据,然后调用修改事件保存。
  到此为止SilverLight连接数据库操作的增,删,查,改已经演示完,有机会我会把WCF RIA SERVICE的自定义类传输和自定义查询给大家进行介绍,今天一直在查这方面资料,发现资料少的可怜,这也是大家学习SilverLight的最大障碍,以后我会尽自己所能为初学者写一些入门介绍,谢谢大家的支持。
本文来自fugitiver的博客,原文地址:
------分隔线----------------------------
来自 Microsoft开源项目Microsoft Health通用用户界面 通过该项目微软提供很多标准控...
在Silverlight相关技术论坛经常会看到Silverlight部署后,客户端无法更新本地XAP文件...
上一篇曾提及xaml中,每个对象元素的声明是对.NET类进行一次实例化操作。xaml作为声明...
在上几篇Silverlight Navigation导航框架教程中,主要介绍了Silverlight Navigation导...
在Silverlight实例教程 - 理解Navigation导航框架Frame类 介绍了Silverlight Navigati...
通过“Navigation导航框架开篇”的介绍,可以了解到Silverlight导航框架可被应用于多...随着Web应用程序的不断发展,用户对富媒体的需求越来越大,以HTML作为操作界面的..
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
基于WPF的Silverlight技术的研究及其在Web目录管理系统中的应用
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口}

我要回帖

更多关于 silverlight 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信