WPF框架ZFS

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上下文基类接口:

该接口主要应用于关联 ViewModelXaml 页面的 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值