天天看点

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

经过多天的思考及忙碌的开发及测试,cyq.data 终于在ui上全面支持wpf,至此,cyq.data 已经可以方便支持wpf的开发,同时,框架仍保留最低.net framework2.0版本的支持。

cyq.data 一直是基于2.0语法下支持开发的框架,在未直接支持wpf之前,对于控件列表的绑定,因为wpf竟然不支持datatable,研究后发现需要从mdatatable.todatatable().defaultview来转一次绑定;另外对于ui控件,也只能原始的赋值方式类似:txtname.text=u.name。

由于很少接触wpf,同时想保留最低2.0版本支持的底线,一直没怎么潜心研究对wpf如何更好的支持。

最近有两个契机,让我想支持wpf的开发:

1:我重新看了下wpf的一些基础开发知识。

2:第n次见到了扩展方法,突然似乎想到了什么。

于是,花了三天的时间左右,终于全面测试通过支持上wpf,当然,框架仍保留最低2.0版本支持。

 示例界面:内容包括wpf下增删改查:

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

直接在id处输入14,点fill按钮,相关值会自动填充:

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

使用cyq.data codefirst 用文本数据库示例一个users表:

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

    class users:cyq.data.orm.ormbase

    {

        public users()

        {

            base.setinit(this, "users", "txt path={0};ts=0");

        }

        public int id

            get;

            set;

        public string name

        public bool isenabled

        public string typename

        public datetime createtime

    }

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

添加(add按钮):采用自动取值,不用单个控件式的u.getfrom(txtname);

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

private void btnadd_click(object sender, routedeventargs e)

            using (users u = new users())

            {

                u.setautoparentcontrol(this);

                if (u.insert(true, insertop.fill))

                {

                    u.settoall(this);

                }

            }

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

更新(update按钮):同样采用自动式取值。

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

 private void btnupdate_click(object sender, routedeventargs e)

                if (u.update(txtid.text, true))

                    load();

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

删除(delete按钮):只需要一个id。

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

 private void btndelete_click(object sender, routedeventargs e)

                u.delete(txtid.text);

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

单个查询(fill):根据id查询后,自动批量赋值。

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

private void btnfill_click(object sender, routedeventargs e)

                if (u.fill(txtid.text))

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

列表控件绑定(默认窗体loaded事件调用):直接支持绑定wpf的datagrid控件。

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

void load()

                u.select().bind(gvusers);

CYQ.Data 支持WPF相关的数据控件绑定(2013-08-09)事件的结果支持WPF的起因:WPF下的测试案例:总结: 

在整个增删改查中,我们几乎不涉及到具体的控件(除了id示例中具体到txtid这个控件),都是采用自动化取值和赋值实现的功能,这种自动化方式,相信对于一些自定义表单式的开发,那是如虎添翼了,这就是在ui支持的强大。

相同的代码,在webform和传统winform,也是一样的。

本节就介绍到这里,在这三天的思考过程和实现中遇到的问题,将由下篇文章写一下技术要点。

本文原创发表于博客园,作者为路过秋天,原文链接:http://www.cnblogs.com/cyq1162/p/3248632.html