对sl传统的开发方式进行了集成和封装,核心模块基于MVVM,通用的CRUD viewmodel,只需要定制自己的Xaml VIEw,提供了非常便捷的快速开发方式; 采用了Silverlight 5.0 + EF4.1 Code First + Ria Service SP2 + Ria Service Toolkit + Silverlight Control Toolkit + light MVVM;已经实现了轻量级的权限管理,上传模块,内容管理,作为实例,涉及到了sl开发的各种技术难点和技巧,既可以作为学习,也可以作为项目开发的原型点击预览 | 源代码
支持动态加载.xap,面向插件开发RAPIdSL.SL.App.Portal提供主框架的UI逻辑,只需要开发自己的App,如RAPIdSL.SL.App.Main
然后配置菜单: 1 @H_301_35@< sdk:TreeVIEwItem header @H_301_35@="产品管理" IsExpanded @H_301_35@="True" @H_301_35@>
2 controls:adminMenuItem ID @H_301_35@="1" margin @H_301_35@="2" Content @H_301_35@="ProductEdit" NavigateVIEw @H_301_35@="RAPIdSL.SL.App.Main.xap/Product.Index" VIEwPermission @H_301_35@="ProductVIEw" @H_301_35@/>
3 @H_301_35@="categoryEdit" ="RAPIdSL.SL.App.Main.xap/category.Index" ="categoryVIEw" 4 @H_301_35@</ sdk:TreeVIEwItem @H_301_35@> NavigateVIEw="RAPIdSL.SL.App.Main.xap/Product.Index"将调用XapHost控件从服务端下载动态加载
NavigateVIEw="RAPIdSL.SL.App.Portal.admin"将调用当前程序集的控件
XapHost控件提供动态下载.xap及加载
1 @H_301_35@public XapHost( @H_301_35@string xapUri, @H_301_35@string vIEwname = @H_301_35@null)
2 {
3 InitializeComponent();
4
5 @H_301_35@this.filename = xapUri;
6
7 @H_301_35@var xapLoad = @H_301_35@new XapLoader(xapUri);
8 xapLoad.DownloadProgressChanged += (s, e) =>
9 {
10 @H_301_35@this.TotalSize = (e.TotalBytesToReceive * 1d / 1024 / 1024).ToString( " 0.00 ");
11 @H_301_35@this.Percentage = e.Progresspercentage;
12 };
13
14 xapLoad.LoadCompleted += (s,128)">15 {
16 @H_301_35@this.Content = e.Element;
17 };
18
19 xapLoad.LoadControl( @H_301_35@null, vIEwname);
20 }
对Resource的支持找到所有标识有 StaticResourceAttribute的类,然后创建相关实例,并注入到Application.Resources,相当于在 App.xaml里手写资源 实现了资源管理器对资源进行注入管理 VIEw Code
键盘Enter键提交表单 使用AttatchProperty实现传统HTML表单的键盘Enter提交 GrID x:name @H_301_35@="LayoutRoot" core:AttachPropertIEs.submitbutton @H_301_35@=" {Binding Elementname=submit} @H_301_35@" 2 button ="submit" ="登录" ="20,20,0" padding Command {Binding UserLogin} 3 GrID @H_301_35@>
具体绑定按钮和键盘事件
1 @H_301_35@#region submitbutton AttachProperty
2 @H_301_35@public @H_301_35@static @H_301_35@object Getsubmitbutton(DependencyObject obj)
3 {
4 @H_301_35@return ( @H_301_35@object)obj.GetValue(submitbuttonProperty);
5 }
6
7 @H_301_35@voID Setsubmitbutton(DependencyObject obj, @H_301_35@object value)
8 {
9 obj.SetValue(submitbuttonProperty, value);
10 }
11
12 // Using a DependencyProperty as the backing store for submitbutton. This enables animation, styling, binding, etc...
13 @H_301_35@Readonly DependencyProperty submitbuttonProperty =
14 DependencyProperty.Registerattached( " submitbutton ",255)">typeof( @H_301_35@object),255)">typeof(AttachPropertIEs),255)">new PropertyMetadata(submitbuttonChanged));
15
16 @H_301_35@private @H_301_35@voID submitbuttonChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
17 {
18 @H_301_35@var button = (buttonBase)e.NewValue;
19 @H_301_35@var form = d @H_301_35@as UIElement;
20 form.KeyDown += (s, se) =>
21 {
22 @H_301_35@if (se.Key == Key.Enter)
23 {
24 button.Focus();
25 @H_301_35@if (button.Command != @H_301_35@null)
26 button.dispatcher.BeginInvoke(()=> button.Command.Execute( @H_301_35@null));
27 }
28 };
29 }
30 @H_301_35@#endregion 总结
以上是内存溢出为你收集整理的基于Silverlight的快速开发框架RapidSL新特性解析全部内容,希望文章能够帮你解决基于Silverlight的快速开发框架RapidSL新特性解析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)