WPF框架ZFS
前文
项目开源地址(非正式版,开发版本), 码云Gitee地址: https://gitee.com/zhgg666/publicWpf
XAML
XAML能帮助团队真正实现UI与逻辑的剥离。XAML是一种单纯的声明语言,也就是说,它只能用来声明一些UI元素 ,绘制UI和动画,根本无法在其中加入程序逻辑,这就强制地把逻辑代码从UI代码分离开。这样,与UI相关的元素全部集中在程序的UI层,与逻辑相关的代码全部集中在逻辑层,形成一种'高内聚-低耦合'的结构。
介绍
该框架, 囊括基础的用户管理、角色管理、菜单管理、字典管理、日志管理, 本篇文章主要介绍现阶段开源的ZFS框架Beta1.0的主要的特性
设计理念
该框架采用的是WPF MVVM架构, 遵循了WPF的数据驱动理念, 与传统的winform相比较, 事件驱动带来的各种强耦合, WPF展现了非常强大的优势, 再结合开源组件的 MaterialDesign 的风格, 使得在整体的UI元素, 过度动画
,与第三方的组件相比, 非常小的容量, 提供源代码,可以自行进行删减修改自定义。MaterialDesign 演示:
MVVM上下文基类接口:
该接口主要应用于关联 ViewModel 与 Xaml 页面的 DataContext 上下文对象。
/// <summary> /// 主窗口接口 /// </summary> public interface IModel { /// <summary> /// 关联数据上下文 /// </summary> /// <typeparam name="TViewModel"></typeparam> /// <param name="viewModel"></param> void BindViewModel<TViewModel>(TViewModel viewModel) where TViewModel : ViewModelBase; /// <summary> /// 关联数据上下文(默认) /// </summary> void BindDefaultViewModel(int? authValue); /// <summary> /// 获取主窗口 /// </summary> /// <returns></returns> UserControl GetView(); }
/// <summary> /// 弹窗接口 /// </summary> public interface IModelDialog { /// <summary> /// 关联数据上下文 /// </summary> /// <typeparam name="TViewModel"></typeparam> /// <param name="viewModel"></param> void BindViewModel<TViewModel>(TViewModel viewModel) where TViewModel : ViewModelBase; /// <summary> /// 弹出窗口 /// </summary> bool? ShowDialog(); /// <summary> /// 关闭窗口 /// </summary> void Close(); }
演示登录接口的实现(继承与IModelDialog接口)
/// <summary> /// 登录窗口 /// </summary> public class LoginViewDlg : ILoginDialog { private Login view; private LoginViewModel loginViewModel; /// <summary> /// 绑定指定ViewModel /// </summary> /// <typeparam name="TViewModel"></typeparam> /// <param name="viewModel"></param> public void BindViewModel<TViewModel>(TViewModel viewModel) where TViewModel : ViewModelBase { this.GetDialog().DataContext = viewModel; } /// <summary> /// 关闭窗口 /// </summary> public void Close() { this.GetDialog().Close(); } /// <summary> /// 打开窗口 /// </summary> /// <returns></returns> public bool? ShowDialog() { return this.GetDialog().ShowDialog(); } /// <summary> /// 获取窗口 /// </summary> /// <returns></returns> public Login GetDialog() { if (view == null) { view = new Login(); } return view; } }
调用代码
//登陆窗口 var Dialog = ServiceProvider.Instance.Get<ILoginDialog>(); Dialog.BindViewModel(new LoginViewModel()); Dialog.ShowDialog();
注:该项目,用到了Unity容器, 所以下载项目的朋友,能在App.xaml详细中看到了项目中看到一个接口注册类
/// <summary> /// Unity接口注入类 /// </summary> class BootStrapper { /// <summary> /// 注册方法 /// </summary> public static void Initialize() { ServiceProvider.RegisterServiceLocator(new UnityServiceLocator()); ServiceProvider.Instance.Register<ILoginDialog, LoginViewDlg>();//用户登录接口 ServiceProvider.Instance.Register<IUserDialog, UserViewDlg>();//用户弹窗接口 ServiceProvider.Instance.Register<IGroupDialog, GroupViewDlg>();//用户组处理接口 ServiceProvider.Instance.Register<ISkinDialog, SkinViewDlg>();//皮肤设置接口 ServiceProvider.Instance.Register<IMainViewDialog, MainViewDlg>();//首页窗口 ServiceProvider.Instance.Register<IMsgDialog, MsgViewDlg>();//消息处理接口 } }
MVVM底层操作基类:
View Code
MVVM实现的结构图示例 :
界面演示
设计:
整套系统, 采用的开源UI组件MaterialDesign , 界面风格元素统一、动画风格遵循框架设计。
MaterialDesign介绍:
官网地址:http://materialdesigninxaml.net/
gitHub地址:https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit
模块/皮肤:
权限管理:
注:
1.希望支持的朋友点击Star关注项目, 关注本人博客 ,长期更新。
2.需要数据库脚本(运行必要文件) 请添加唯一交流QQ 群 : 874752819
3.开发工具: VS2017 + MSSQL2012