基于Silverlight的快速开发框架RapidSL新特性解析

对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  < sdk:TreeViewItem  Header ="产品管理"  IsExpanded ="True" >
    2                                  < controls:AdminMenuItem  Id ="1"  Margin ="2"  Content ="ProductEdit"  NavigateView ="RapidSL.SL.App.Main.xap/Product.Index"  ViewPermission ="ProductView" />
    3                                  < controls:AdminMenuItem  Id ="2"  Margin ="2"  Content ="CategoryEdit"  NavigateView ="RapidSL.SL.App.Main.xap/Category.Index"  ViewPermission ="CategoryView" />
    4                              </ sdk:TreeViewItem >
    NavigateView="RapidSL.SL.App.Main.xap/Product.Index"将调用XapHost控件从服务端下载动态加载

     

    NavigateView="RapidSL.SL.App.Portal.Admin"将调用当前程序集的控件

     

     

  •  XapHost控件提供动态下载.xap及加载

     

    复制代码
     1  public XapHost( string xapUri,  string viewName =  null)
     2         {
     3             InitializeComponent();
     4 
     5              this.FileName = xapUri;
     6 
     7              var xapLoad =  new XapLoader(xapUri);
     8             xapLoad.DownloadProgressChanged += (s, e) =>
     9             {
    10                  this.TotalSize = (e.TotalBytesToReceive * 1d /  1024 /  1024).ToString( " 0.00 ");
    11                  this.Percentage = e.ProgressPercentage;
    12             };
    13 
    14             xapLoad.LoadCompleted += (s, e) =>
    15             {
    16                  this.Content = e.Element;
    17             };
    18 
    19             xapLoad.LoadControl( null, viewName);
    20         }
    复制代码

 

对Resource的支持

  • 找到所有标识有 StaticResourceAttribute的类,然后创建相关实例,并注入到Application.Resources,相当于在 App.xaml里手写资源
  • 实现了资源管理器对资源进行注入管理
View Code

 

键盘Enter键提交表单

    • 使用AttatchProperty实现传统Html表单的键盘Enter提交
      1  < Grid  x:Name ="LayoutRoot"  core:AttachProperties.SubmitButton =" {Binding ElementName=submit} " >
      2  < Button  x:Name ="submit"  Content ="登录"  Margin ="20,0,20,0"  Padding ="20,0,20,0"  Command =" {Binding UserLogin} " />
      3  </ Grid >

 

  • 具体绑定按钮和键盘事件
    复制代码
     1  #region SubmitButton AttachProperty
     2          public  static  object GetSubmitButton(DependencyObject obj)
     3         {
     4              return ( object)obj.GetValue(SubmitButtonProperty);
     5         }
     6 
     7          public  static  void SetSubmitButton(DependencyObject obj,  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          public  static  readonly DependencyProperty SubmitButtonProperty =
    14             DependencyProperty.RegisterAttached( " SubmitButton "typeof( object),  typeof(AttachProperties),  new PropertyMetadata(SubmitButtonChanged));
    15 
    16          private  static  void SubmitButtonChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    17         {
    18              var button = (ButtonBase)e.NewValue;
    19              var form = d  as UIElement;
    20             form.KeyDown += (s, se) =>
    21             {
    22                  if (se.Key == Key.Enter)
    23                 {
    24                     button.Focus();
    25                      if (button.Command !=  null)
    26                        button.Dispatcher.BeginInvoke(()=>  button.Command.Execute( null));
    27                 }
    28             };
    29         }
    30          #endregion
    复制代码
【SCI复现】基于纳什博弈的多微网主体电热双层共享策略研究(Matlab代码实现)内容概要:本文围绕“基于纳什博弈的多微网主体电热双层共享策略研究”展开,结合Matlab代码实现,复现了SCI级别的科研成果。研究聚焦于多个微网主体之间的能源共享问题,引入纳什博弈理论构建双层优化模型,上层为各微网间的非合作博弈策略,下层为各微网内部电热联合优化调度,实现能源高效利用与经济性目标的平衡。文中详细阐述了模型构建、博弈均衡求解、约束处理及算法实现过程,并通过Matlab编程进行仿真验证,展示了多微网在电热耦合条件下的运行特性和共享效益。; 适合人群:具备一定电力系统、优化理论和博弈论基础知识的研究生、科研人员及从事能源互联网、微电网优化等相关领域的工程师。; 使用场景及目标:① 学习如何将纳什博弈应用于多主体能源系统优化;② 掌握双层优化模型的建模与求解方法;③ 复现SCI论文中的仿真案例,提升科研实践能力;④ 为微电网集群协同调度、能源共享机制设计提供技术参考。; 阅读建议:建议读者结合Matlab代码逐行理解模型实现细节,重点关注博弈均衡的求解过程与双层结构的迭代逻辑,同时可尝试修改参数或扩展模型以适应不同应用场景,深化对多主体协同优化机制的理解。
绘画教学机器人是一种借助现代科技辅助人们进行绘画活动的教学工具。 在当前这份资料中,我们重点阐述了基于Arduino开发板构建的绘画教学机器人,该设备运用图像识别和电机控制技术来完成自动绘画工作。 代码转载自:https://pan.quark.cn/s/128130bd7814 以下是本资料中的核心内容:1. Arduino及其在机器人中的应用:Arduino是一个开放源代码的电子原型平台,它包含一块能够执行输入/输出操作的电路板以及配套的编程系统,通常用于迅速构建交互式电子装置。 在本次项目中,Arduino充当机器人的核心部件,负责接收图像分析后的数据,并将这些数据转化为调控步进电机旋转的指令,进而引导笔架在白板上进行作画。 2. 图像识别技术:图像识别技术是指赋予计算机识别和处理图像中物体能力的技术手段。 本项目的图像识别功能由摄像头承担,它能够获取图像,并将彩色图像转化为灰度图像,再采用自适应阈值算法处理为二值图像。 随后,通过图像细化方法提取出二值图像的骨架信息,用以确定绘画的目标和路径。 3. 电机控制机制:电机控制是指借助电子技术对电机运行状态进行管理。 在本项目中,两个步进电机由Arduino进行控制,实现精准的位置控制,从而达到绘画的目的。 步进电机的正转与反转动作能够驱动笔架部件,沿着预设的轨迹进行绘画。 4. 机器人设计要素:机器人的设计涵盖了图像处理单元、机械控制单元和图像处理算法。 机械单元的设计需要兼顾画笔的支撑构造,确保画笔的稳定性,并且能够适应不同的绘画速度和方向。 在硬件设计层面,选用了ULN2003驱动器来增强Arduino输出的信号,以驱动步进电机运转。 5. 所采用的技术工具与材料:项目中的主要硬件设备包括Arduino控制板、步进电机、ULN...
先展示下效果 https://pan.quark.cn/s/d8b64f900c05 在本文中,我们将详细研究Three.js库如何应用于构建点线几何空间图形特效,以及与HTML5 Canvas和几何空间相关的技术。 Three.js是一个基于WebGL的JavaScript库,它为开发者提供了一个便捷易用的接口来构建3D内容,可以在现代浏览器中运行,无需安装插件支持。 我们需要掌握Three.js中的基本概念。 Three.js的核心构成元素包括场景(Scene)、相机(Camera)和渲染器(Renderer)。 场景是3D世界的容纳单元,相机决定了观察3D世界的角度,而渲染器则负责将场景和相机整合成可视化的图像。 1. **Three.js的几何体**:在Three.js中,可以构建多种几何体,如BoxGeometry(立方体)、SphereGeometry(球体)和LineGeometry(线条)。 对于"点线几何空间图形特效",LineGeometry扮演着核心角色。 这种几何体允许开发者构建由一系列点构成的线段。 点可以被串联起来形成复杂的线性构造,这些构造可以进一步进行动画处理,以产生动态的视觉表现。 2. **材质(Material)**:赋予几何体色彩和质感的是材质。 在Three.js中,有多种材质类型,如MeshBasicMaterial、MeshLambertMaterial和LineBasicMaterial等。 对于点线效果,LineBasicMaterial通常会被选用,它能够设定线条的颜色、宽度和透明度等特征。 3. **着色器(Shader)**:为了实现更高级的效果,如光照、纹理和粒子系统,Three.js支持自定义着色器。 尽管"点线几何空间图形特效...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值