首页 > 其他分享 >wpf自定义行为库(一)

wpf自定义行为库(一)

时间:2023-03-20 13:45:12浏览次数:45  
标签:功能 自定义 MVVM 实现 行为 wpf 导航

起因:我有个相对简单的WPF上位机程序,逻辑还是事件驱动那一套,虽然写的时候方便,但是代码的复用性太差了,并且各个模块的耦合度也很高,修改难度较大,于是我萌生了一个想法,将其改造为MVVM模式,同时也作为一次学习MVVM的实践,顺利的话还能得到一个不错的软件基本框架,不错的想法,冲了;

问题:刚开始改造就遇到一个问题,我应该怎样实现一个关闭窗口功能,同时要有弹窗提示,要符合MVVM,不会污染到ViewModel;

解决方案:用行为来实现,所以打算自己搞个行为库,也算是把重复利用率较高的代码封装起来,方便以后复用。

 

开搞开搞!

新建一个wpf类库,下载几个Nuget包:最开始我只下载了下面这个,足够满足需求

 

 后面由于用的mvvm框架没有导航的功能,所以为了自己实现,又下载了两个Nuget包:

(实现过程详见另外一篇博客:wpf mvvm 用行为以及依赖注入的方式实现导航功能 - JustWantToStudy - 博客园 (cnblogs.com)

 

 

先看一下项目框架:

 

 目前实现的行为有(从上到下):Button的点击导航行为,window的关闭和最小化行为,FrameworkElement的获取鼠标位置行为,Button的点击出现弹窗行为,window的初始化导航功能行为,ContentControl的区域注册行为;其中,第1、5、6这三个行为的最终目的就是实现区域导航功能。

后面会一一介绍。

标签:功能,自定义,MVVM,实现,行为,wpf,导航
From: https://www.cnblogs.com/JustWantToStudy/p/17236001.html

相关文章

  • Solon2 自定义 slf4j 日志添加器(比如存到数据库)
    本案需要引入已适配的slf4j日志框架(solon.logging.simple或logback-solon-plugin或log4j-solon-plugin)。1、自定义添加器入门实现自定义添加器实现一个简单的日......
  • 自定义ViewGroup 实现拖动跟快速滚动的效果
     之前做到个项目要类似listView或者GridView中的控件移动的效果(主屏上所有程序列表上的效果):1:子控件跟着手指移动2:快速拨动一下,根据拨动的速度......
  • Android自定义长按事件
    Android系统自带了长按事件,setOnLongClickListener即可监听。但是有时候,你不希望用系统的长按事件,比如当希望长按的时间更长一点的时候。这时候就需要......
  • Three.js自定义shader实现离相机越近越透明效果
    constcustomShader=newTHREE.ShaderMaterial({uniforms:{},defines:{nearDis:0.3},transparent:true,side:THREE.DoubleSide,vertexShader:......
  • Java stream sorted自定义排序规则实现多字段排序
      Stream提供了丰富的操作(中间操作和终端操作)集合元素的轮子,但Stream流操作不影响原始集合数据,执行结果是一个新的集合对象。在《Javastreamsorted使用Comparator进......
  • 人类脑瘫行为实录 #2
    凭实力脑瘫到底!又是熟悉的F题呢/wx/wx/wx这次题目长这样:有\(n\)对数\(a_i,b_i\)和\(m\)对数\(c_i,d_i\),你可以在这两组数里面各挑出一对数(总方案是\(nm\)),问......
  • fastadmin 自定义build_toolbar按钮
    fastadmin自定义build_toolbar按钮何渊渊于2020-09-2311:13:31发布1930收藏4分类专栏:fastadmin文章文章标签:javascriptphp版权fastadmin同时被2个专栏收......
  • 设计模式(二十五)----行为型模式之访问者模式
    1概述定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变这个数据结构的前提下定义作用于这些元素的新的操作。2结构访问者模式包含以下主要角色:抽......
  • .NET中的winform、wpf、winui和maui你都知道吗?
    前言    年初.NET工程师的求职者反馈不好找工作,尤其是B/S开发,C/S开发稍微好点。这种情况下有好多小伙伴都想转行了,于是了解了一下JAVA,比.NET还卷,还是走.NET内部转行吧......
  • 自定义异常回滚@Transactional注解
    //重点关注的是@Transactional注解和TransactionAspectSupport.currentTransactionStatus().setRollbackOnly()@Override@Transactional(rollbackFor=RuntimeExcep......