天天看點

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