朝花夕拾——更新两个开源项目

2021-12-01 16:26:43 浏览数 (1)

开源项目

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

BindingEngine

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

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

使用示例:

代码语言:javascript复制
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。

目前支持的绑定有:

代码语言:javascript复制
// 属性绑定
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上,地址参见项目地址:

代码语言:javascript复制
https://github.com/zhouyongh/BindingEngine

GaleSong

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

代码语言:javascript复制
https://www.cnblogs.com/Zhouyongh/archive/2012/02/16/2353498.html

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

代码语言:javascript复制
https://gitee.com/zhouyongh/gale-song

起了个名字叫GaleSong,中文名:大风歌。

0 人点赞