资源简介
模仿vue 实现的 在winform 上实现的数据模型双向绑定。升级版使用 castle 进行动态代理,较与旧版节省大量代码的书写,同时将核心抽出来,还能用到其它需要监听属性变化的地方
代码片段和文件信息
using Castle.DynamicProxy;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using TViewCore;
namespace TView
{
public class ViewBind
{
///
/// 默认绑定事件
///
private string DefaultEvents = “Collectionchange|SelectedValueChanged|ValueChanged|TextChanged“;
///
/// 默认绑定的属性,从左往右,能找到则赋值
///
private string DefaultProperty = “DataSource|Value|Text“;
///
/// 绑定视图
///
/// 父控件
/// 模型(对象)
public ViewBind(Control ParentControl object model)
{
var pg = new ProxyGenerator();
var pi = new PropertyInterceptor(model);
model = pg.CreateClassProxy(model.GetType() new IInterceptor[] { pi });
this.BindingParentControl(ParentControl model);
}
///
/// 绑定控件
///
/// 父控件
/// 实体
private void BindingParentControl(Control ParentControl object model)
{
this.BindControl(ParentControl model ParentControl.Controls);
}
///
/// 绑定控件
///
/// 父控件
/// 实体
/// 子控件列表
private void BindControl(Control ParentControl object model Control.ControlCollection Controls)
{
foreach (Control control in Controls)
{
var tag = control.Tag;
if (tag == null) continue;
foreach (var tagInfo in tag.ToString().Split(‘|‘))
{
var tagInfoArr = tagInfo.Split(‘-‘);
//属性绑定
if (tagInfoArr[0].Equals(“dt“)|| tagInfoArr[0].Equals(“data“))
{
var bindProperty = string.Empty;
if (tagInfoArr.Length == 2)
{
foreach (var property in DefaultProperty.Split(‘|‘))
{
if(control.GetType().GetProperty(property)!=null)
{
bindProperty = property;
break;
}
}
}
else if (tagInfoArr.Length == 3)
{
bindProperty = tagInfoArr[1];
}
else continue;
string propertyName = tagInfoArr[ta
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 329 2018-08-26 00:18 tview_v2\.git\config
文件 73 2018-08-26 00:18 tview_v2\.git\desc
文件 23 2018-08-26 00:18 tview_v2\.git\HEAD
文件 478 2018-08-26 00:18 tview_v2\.git\hooks\applypatch-msg.sample
文件 896 2018-08-26 00:18 tview_v2\.git\hooks\commit-msg.sample
文件 3327 2018-08-26 00:18 tview_v2\.git\hooks\fsmonitor-watchman.sample
文件 189 2018-08-26 00:18 tview_v2\.git\hooks\post-update.sample
文件 424 2018-08-26 00:18 tview_v2\.git\hooks\pre-applypatch.sample
文件 1638 2018-08-26 00:18 tview_v2\.git\hooks\pre-commit.sample
文件 1348 2018-08-26 00:18 tview_v2\.git\hooks\pre-push.sample
文件 4898 2018-08-26 00:18 tview_v2\.git\hooks\pre-reba
文件 544 2018-08-26 00:18 tview_v2\.git\hooks\pre-receive.sample
文件 1492 2018-08-26 00:18 tview_v2\.git\hooks\prepare-commit-msg.sample
文件 3610 2018-08-26 00:18 tview_v2\.git\hooks\update.sample
文件 11579 2018-08-26 00:18 tview_v2\.git\index
文件 240 2018-08-26 00:18 tview_v2\.git\info\exclude
文件 182 2018-08-26 00:18 tview_v2\.git\logs\HEAD
文件 182 2018-08-26 00:18 tview_v2\.git\logs\refs\heads\master
文件 182 2018-08-26 00:18 tview_v2\.git\logs\refs\remotes\origin\HEAD
文件 4012 2018-08-26 00:18 tview_v2\.git\ob
文件 1118364 2018-08-26 00:18 tview_v2\.git\ob
文件 114 2018-08-26 00:18 tview_v2\.git\packed-refs
文件 41 2018-08-26 00:18 tview_v2\.git\refs\heads\master
文件 32 2018-08-26 00:18 tview_v2\.git\refs\remotes\origin\HEAD
文件 452 2018-08-26 00:51 tview_v2\.vs\TView\DesignTimeBuild\.dtbcache
..A..H. 102400 2018-08-29 22:54 tview_v2\.vs\TView\v15\.suo
文件 0 2018-08-26 00:18 tview_v2\.vs\TView\v15\Server\sqlite3\db.lock
文件 4096 2018-08-26 00:18 tview_v2\.vs\TView\v15\Server\sqlite3\storage.ide
文件 32768 2018-08-29 21:33 tview_v2\.vs\TView\v15\Server\sqlite3\storage.ide-shm
文件 972352 2018-08-29 21:34 tview_v2\.vs\TView\v15\Server\sqlite3\storage.ide-wal
............此处省略163个文件信息
相关资源
- WPF绘图控件DynamicDataDisplay手册
- WPFVisifire3.6.8源代码的扩展及超详细
- zw_WPF_开发教程(_中文版).zip
- WPF:自定义Metro样式文件夹选择对话框
- WPF报表控件表格和图表
- WPF项目搭建源代码
- wpf3D滑动切换图片
- WPFVisifire.Charts全版本dll集合
- WPF超级完美仿苹果的工具栏
- LiveCharts样例
- 漂亮的WPFUI模板
- 银行业务信息管理系统WPF和C#)
- wpf 很漂亮的工资管理系统
- WPF磨砂蒙版效果
- 基于WPF MVVM框架开发的串口调试助手
- 使用WPF实现iPhone的短信框效果
- wpf 各种自定义控件
- WPF实现图片翻书功能
- WPF帮助文档
- WPF从入门到精通开发指南
- 非常酷的wpf控件库包括一套实现得很
- WPF源码 DiagramDesigner 图解设计
- GMap.net的WPF实现demo
- c# 酒店管理系统源码(WPF) VS 2010
- STM32-ISP-WPF上位机源码
- C#写的酒店管理系统源码WPF框架
- WPF使用MQTTnet连接阿里云物联网平台
- WPF记事本的实现
- WPF利用HelixToolkit后台导入3D模型
- SM9国密算法验证工具 C#实现
评论
共有 条评论