当前位置:   article > 正文

prism项目搭建 wpf_Prism完成的一个WPF项目

prism for wpf 搭建一个简单的模块化开发框架

本着每天记录一点成长一点的原则,打算将目前完成的一个WPF项目相关的技术分享出来,供团队学习与总结。

总共分三个部分:

基础篇主要针对C#初学者,巩固C#常用知识点;

中级篇主要针对WPF布局与MaterialDesign美化设计,在减轻代码量的情况做出漂亮的应用;

终极篇为框架应用实战,包含系统分层、MVVM框架Prism安装与使用、ORM框架EntityFramework Core配置与使用、开源数据库Postgresql配置与使用。

目录

前言

此篇主要介绍系统分层模型、如何安装Prism快速开发模板与MVVM框架使用、如何配置ORM框架Entity Framework Core与使用、以及Postgresql数据库配置。

系统分层

项目比较简单,大概分层模型如下:

View双向绑定ViewModel;

ViewModel调用Service取得DataModel业务数据;

Service通过调用Repository取得Entity数据;

Repository调用Entity Framework Core,自动创建Sql执行并返回Entity对象;

Entity Framework Core通过驱动链接数据库。

如果项目功能或者对接端末比较多,最好扩展成微服务。

MVVM框架之Prism

MVVM(Model–view–viewmodel)是微软的WPF和Silverlight架构师之一John Gossman于2005年发布的软件架构模式。目的就是把用户界面设计与业务逻辑开发分离,方便团队开发和自动化测试。目前流行的Android开发、Web开发都在使用,具体MVVM的介绍参照个人博客:核心框架MVVM与MVC、MVP的区别(图文详解)。

一、无框架的MVVM实现

设计与逻辑分离的基本就是绑定,通过发布者订阅者模式实现数据更新通知。

1、属性绑定

默认属性为单向绑定,如果需要双向绑定需要实现INotifyPropertyChanged接口。

第一步:一般是建立如下基类。

using System;

using System.ComponentModel;

using System.Runtime.CompilerServices;

namespace MvvmDemo.Common

{

///

/// Viewmodel基类,属性双向绑定基础

///

public class ViewModelBase : INotifyPropertyChanged

{

public event PropertyChangedEventHandler PropertyChanged;

///

/// 属性变更通知

///

/// 属性名

public void NotifyPropertyChanged([CallerMemberName] String propertyName = "")

{

if (PropertyChanged != null)

{

PropertyChanged(this, new PropertyChangedEventArgs(propertyName));

}

}

}

}

第二步:各个ViewModel继承基类。

public class UserViewModel : ViewModelBase

{

private string _userId;

private string _userName;

///

/// 用户名

///

public string UserId

{

get

{

return _userId;

}

set

{

_userId = value;

NotifyPropertyChanged();

}

}

///

/// 用户名

///

public string UserName

{

get

{

return _userName;

}

set

{

_userName = value;

NotifyPropertyChanged();

}

}

}

第三步:Xaml绑定属性,实现消息通知。

备注:通过IValueConverter可以做一些特殊绑定处理。比如,经典的就是Bool值控制Visibility。

[ValueConversion(typeof(bool), typeof(Visibility))]

public class BoolToVisibiltyConverter : MarkupExtension, IValueConverter

{

public object Convert(object value, Type targetType, object parameter, CultureInfo culture)

{

bool flag = false;</

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/运维做开发/article/detail/869603
推荐阅读
相关标签
  

闽ICP备14008679号