索引
SilverLight企业应用框架设计【五】客户端调用服务端(使用JSON传递数据,自己实现RESTful Web服务)
SilverLight企业应用框架设计【四】实体层设计+为客户端动态生成服务代理(自己实现RiaService)
SilverLight企业应用框架设计【三】服务端设计
SilverLight企业应用框架设计【二】框架画面
SilverLight企业应用框架设计【一】整体说明
首先我们设计的窗体如下

xaml代码如下:
需要说明的:
1.
所有的业务窗体都继承自BasePage类

这也是为什么xaml代码的开始处是<location:BasePage….
2.
由于左侧的树控件和右侧的Grid控件中间
有个GridSplitter控件
所以可以自由的拖动GridSplitter控件以变化左右两侧控件的大小
树控件我们暂且不提(没有什么特殊的地方)
-------------------------
在加载页面的Loaded事件中执行了如下代码
其中IsLoaded属性是基类BasePage的属性
代码如下
这样做就是为了避免重复执行InitMenuTree和InitTypeCB两个方法的代码
(tab页面切换会触发Loaded事件)
------------------------------------
先来看InitMenuTree的代码
笔者并没有使用数据绑定的形式给控件赋值
而是直接创建了树控件的子控件来赋值的(这与我们的数据结构有关,这样做更简便一些)
MenuM类型并不是一个自引用的类型(没有记录ParentMenu只记录了ParentId)
其中InitParentMenu是初始化下拉框的函数(修改子菜单的父级菜单时用到,这里就不多说了)
-----------------------------------------------
InitTypeCB是构造可以使用的菜单路径(下拉框)的函数
此函数反射出了所有业务窗体的类名,并赋值给了一个ComboBox,以供选择
---------------------------------------------------------------
当选中菜单树中的某一项时执行如下事件
因为MenuFormG内的数据绑定元素基本上都是使用的双向绑定(更改会直接反应在实体上)
所以我们深拷贝了一个实体提供给表单(这样就不会影响现有实体的数据)
技巧:深拷贝其实就是执行了一次序列化和反序列化的过程
代码如下:
------------------------------------------------------
下面我们来看一下增加一个菜单的方法
验证客户端输入的数据是否正确的方法,是基类提供的
如果某一个菜单项含有错误信息,那么将验证不通过。
Reload方法也是基类提供的
此函数也结合前面的章节来看。
--------------------------------------
至此本系列全部写完了!
源码下载
喜欢的请点推荐,支持我的文章。谢谢各位啦
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库