更新两个WPF开源项目

前言

好久没更新博客了,最近准备重拾博客,将更新恢复起来。

开源项目

这些年零零散散做了很多项目,准备整理一下,将其开源,现整理了两个项目:绑定引擎(BindingEngine),插件式UI框架(GaleSong)。

BindingEngine

这是一个自定义的绑定引擎,项目的想法是将WPF的ViewModel用到各处:比如Winform、Xamarin、Web等等,

期望可以做到多个环境多个View共同绑定一份ViewModel,当ViewModel变化时,多个View可同步更新。

使用示例:

BindingEngine.SetPropertyBinding(this.winformTabControl, i => i.SelectedIndex,                     DataWarehouse.Instance, o => o.SelectedIndex).SetMode(BindMode.TwoWay).AttachTargetEvent("SelectedIndexChanged");这段代码的意思是:
1. 将winFormTabControl控件的SelectedIndex属性绑定至  DataWarehouse.Instance的SelectedIndex。
2. 类型是双向绑定(TwoWay)
3. 更新触发事件是SelectedIndexChanged。

目前支持的绑定有:

// 属性绑定
WinformBinding.SetPropertyBinding(this.trackBar1,                     i => i.Minimum, DataWarehouse.Instance,                     o => o.ControlViewModel1.SliderMinValue);// 集合绑定
WinformBinding.SetCollectionBinding(this.tabControl1, i => i.TabPages,                       DataWarehouse.Instance,                       o => o.ControlViewModel1.Persons, false).SetTargetCollectionHandler(new TabControlCollectionHanlder()).Activate();// 命令绑定
WinformBinding.SetCommandBinding(this.addBtn1, null,                     DataWarehouse.Instance,                     i => i.ControlViewModel1.AddCommand).AddEnableProperty<Button>(button => button.Enabled).AttachTargetEvent("Click");// 通知绑定
WinformBinding.SetNotifyBinding(……
// 方法绑定
WinformBinding.SetMethodBinding(……

运行示例,当点击左侧WinForm中的控件,右面WPF的控件可同步更新,反之亦然。

代码在Github上,地址参见项目地址:

https://github.com/zhouyongh/BindingEngine

GaleSong

一个插件式的WPF UI框架,是一个仿Visual Studio的UI框架,技术的原型来自于前文:

https://www.cnblogs.com/Zhouyongh/archive/2012/02/16/2353498.html

整理了下代码,上传至码云中,地址:

https://gitee.com/zhouyongh/gale-song

起了个名字叫GaleSong,中文名:大风歌,起这个名字时有些唏嘘,时间流逝得太快,一晃就成老兵了……T_T。

老骥伏枥,志在千里。

大风吹过,总要留下些什么

作者:周永恒

出处:http://www.cnblogs.com/Zhouyongh

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/302677.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL ES 3D 粒子系统小结

2019独角兽企业重金招聘Python工程师标准>>> 所谓粒子系统可以想象为一堆粒子由一个点或一个面按照一定的规律进行喷射。 粒子系统大致分为2类&#xff1a;一类为“点喷式”&#xff0c;一类为“面喷式”。可以想象前者由一个点进行喷射&#xff0c;类似于焰火&…

理科生用创意毁灭世界,爆笑!

全世界有3.14 % 的人已经关注了数据与算法之美1、青年问禅师&#xff1a;“大师&#xff0c;我很爱我的女朋友&#xff0c;她也有很多优点&#xff0c;但是总有几个缺点让我非常讨厌&#xff0c;有什么方法能让她改变&#xff1f;”禅师浅笑&#xff0c;答&#xff1a;“方法很…

php 派生类 构造,C++派生类的构造函数和析构函数

派生类对象中包含基类对象&#xff0c;因此派生类对象在创建时&#xff0c;除了要调用自身的构造函数进行初始化外&#xff0c;还要调用基类的构造函数初始化其包含的基类对象。因此&#xff0c;程序中任何能够生成派生类对象的语句&#xff0c;都要说明其包含的基类对象是如何…

我的C#/.NET学习诀窍——LINQPad

在我以往的文章中&#xff0c;尤其涉及代码演示的&#xff0c;都使用了同一个工具——LINQPad。但许多客户面对我分享的.linq源文件都迷茫不知所措&#xff0c;因此有必要来聊聊一下这个强大的工具。本文首先将对该工具做个简单的介绍&#xff0c;并且分享一些LINQPad的优点&am…

数学在生活中无处不在,36个生活小故事涵盖小学所有的数学知识!

数学不是脱离生活的&#xff0c;而是源于生活&#xff0c;更要回归于生活。解决生活中遇到的问题&#xff0c;就是最自然的数学应用题。生活场景中的学习&#xff0c;是最生动的体验式学习机会。用学到的数学知识来解决生活中的问题&#xff0c;正是孩子体会数学奥妙的绝佳机会…

每天的0点php,使用strtotime,这个月的第一天凌晨0点在PHP?(Using just strtotime, 0 am first day of this month in PHP?)...

使用strtotime&#xff0c;这个月的第一天凌晨0点在PHP&#xff1f;(Using just strtotime, 0 am first day of this month in PHP?)echo mydate(strtotime(1 am first day of this month));以上工作结果2017-10-01 01:00:00 &#xff0c;但我很难在凌晨0点做到。 24am, 24pm,…

面试八股文:你写过自定义任务调度器吗?

最近入职了新公司&#xff0c;尝试阅读祖传代码&#xff0c;记录并更新最近的编程认知。思绪由Q1引发&#xff0c;后续Q2、Q3基于Q1的发散探究Q1. Task.Run、Task.Factory.StartNew 的区别&#xff1f;我们常使用Task.Run和Task.Factory.StartNew创建并启动任务&#xff0c;但是…

快速掌握MATLAB应用,从这一步开始

有人说&#xff0c;“MATLAB除了不会生孩子&#xff0c;什么都会。”矩阵运算、数据可视化、GUI&#xff08;用户界面&#xff09;设计、甚至是连接其他编程语言&#xff0c;MATLAB都能轻松实现&#xff01;那么&#xff0c;MATLAB到底有多厉害&#xff1f;MATLAB拥有丰富的算法…

Solarwinds的NetFlow Traffic Analyzer中的Cisco设备配置

如果要使用Solarwinds的NetFlow Traffic Analyzer这个产品首先要安装Orion然后再安装Netflow&#xff0c;其次要设备支持Netflow&#xff0c;下面列出的是支持netflow的cisco设备&#xff1a;支持cisco netflower的cisco设备2007-08-16 15:09 Cisco 800, 1700, 1800, 2800, 380…

mobile.php discuz,电脑访问discuz手机版【触屏版跳转标准版的修改方法】

推荐方法&#xff1a;以前我们介绍过如何通过修改Chrome浏览器运行参数的方法来模拟手机访问网站&#xff0c;但是在Chrome 32和33版本以后增加了更加便捷的方法&#xff0c;在开发者工具中只需要设置一下就能方便的模拟各种手机型号的访问效果了。方法如下&#xff1a;1、打开…

深入探究ASP.NET Core读取Request.Body的正确方式

前言相信大家在使用ASP.NET Core进行开发的时候&#xff0c;肯定会涉及到读取Request.Body的场景&#xff0c;毕竟我们大部分的POST请求都是将数据存放到Http的Body当中。因为笔者日常开发所使用的主要也是ASP.NET Core所以笔者也遇到这这种场景&#xff0c;关于本篇文章所套路…

送给“苦逼”的IT人系列1:IT人的“钱”景以及收入的两道坎

虽然IT工作五花八门&#xff0c;而且年纪有老有少&#xff0c;但IT人的收入总体还是比较有规律的&#xff0c;很明显的可以看出有两道坎&#xff0c;分别是10W&#xff0c;和30W&#xff0c;当然&#xff0c;我说的是年薪&#xff0c;是RMB&#xff0c;不包含任何跟销售相关的提…

追MM的各种算法

全世界有3.14 % 的人已经关注了数据与算法之美动态规划基本上就是说&#xff1a;你追一个MM的时候&#xff0c;需要对该MM身边的各闺中密友都好&#xff0c;这样你追MM这个问题就分解为对其MM朋友的问题&#xff0c;只有把这些问题都解决了&#xff0c;最终你才能追到MM。因此&…

gRPC在C#中的未来属于grpc-dotnet

作者&#xff1a;Jan Tattermuschgrpc-dotnet&#xff08;Grpc.Net.Client[1]和Grpc.AspNetCore.Server[2] nuget 包&#xff09;现在是.NET/C#中推荐的 gRPC 实现。最初的 gRPC C#实现&#xff08;Grpc.Core nuget 包&#xff09;将进入维护模式&#xff0c;不会得到任何新功能…

(部分来自windows核心编程)远程注入dll

{//仅仅支持ANSI路径//find the wndHWND hwnd FindWindow(NULL,"1.txt - 记事本");//get pidDWORD tid,pid;tid GetWindowThreadProcessId(hwnd,&pid);if (0pid)//for test{pid GetCurrentProcessId();}HANDLE hProcess OpenProcess(PROCESS_ALL_ACCESS,FALS…

linux命令apprw,linux命令学习1(示例代码)

[[email protected] app]# cat /etc/redhat-releaseCentOS Linux release 7.1.1503 (Core)总用量 2636-rw-r--r--. 1 root root 1222783 10月 28 12:09 Glances-1.7.1.tar.gz-rw-r--r--. 1 root root 388499 11月 7 13:20 htop-1.0.2.tar.gz-rw-r--r--. 1 root root 1081874 …

ML.NET 示例:对象检测

ML.NET 版本API 类型状态应用程序类型数据类型场景机器学习任务算法v1.4动态API最新控制台应用程序图像文件对象检测深度学习Tiny Yolo2 ONNX 模型有关如何构建此应用程序的详细说明&#xff0c;请参阅Microsoft Docs网站上附带的教程。问题对象检测是计算机视觉中的一个经典问…

双十一来了,揭秘菜鸟物流背后的那些算法黑科技

又是一年双十一&#xff0c;又一个巨大的挑战摆在了包括菜鸟网络在内的物流面前&#xff0c;但随着人工智能、大数据的应用越来越广泛&#xff0c;无人化仓储、无人化配送越来越多&#xff0c;供应链越来越扁平化&#xff0c;各种算法应用到物流领域的每一个细节。那么&#xf…

socket编程资料-网络收集

1、什么是Socket&#xff1f; Socket又称之为“套接字”&#xff0c;是系统提供的用于网络通信的方法。它的实质并不是一种协议&#xff0c;没有规定计算机应当怎么样传递消息&#xff0c;只是给程序员提供了一个发送消息的接口&#xff0c;程序员使用这个接口提供的方法&#…

linux监听端口丢失,linux – 如果没有监听端口,则为Systemd重启服务

我建议你采用不同的方法,并使用专用的监控工具来实现这一目标.我最喜欢的监控工具,允许重新启动服务,以防它们崩溃,或者不再在其配置的端口上监听,这是monit&#xff1a;https://packages.debian.org/jessie/monit配置文件中有很多示例,在此站点和其他地方有关设置的示例.我将列…