天天看點

CYQ.Data 支援WPF相關的資料控件綁定事件的結果支援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相關的資料控件綁定事件的結果支援WPF的起因:WPF下的測試案例:

直接在ID處輸入14,點Fill按鈕,相關值會自動填充:

CYQ.Data 支援WPF相關的資料控件綁定事件的結果支援WPF的起因:WPF下的測試案例:

使用CYQ.Data CodeFirst 用文本資料庫示例一個Users表:

   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

   }

添加(Add按鈕):采用自動取值,不用單個控件式的u.GetFrom(txtName);

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);

               }

           }

更新(Update按鈕):同樣采用自動式取值。

private void btnUpdate_Click(object sender, RoutedEventArgs e)

               if (u.Update(txtID.Text, true))

                   Load();

删除(Delete按鈕):隻需要一個ID。

private void btnDelete_Click(object sender, RoutedEventArgs e)

               u.Delete(txtID.Text);

單個查詢(Fill):根據ID查詢後,自動批量指派。

private void btnFill_Click(object sender, RoutedEventArgs e)

               if (u.Fill(txtID.Text))

清單控件綁定(預設窗體Loaded事件調用):直接支援綁定WPF的DataGrid控件。

void Load()

               u.Select().Bind(gvUsers);

在整個增删改查中,我們幾乎不涉及到具體的控件(除了ID示例中具體到txtID這個控件),都是采用自動化取值和指派實作的功能,這種自動化方式,相信對于一些自定義表單式的開發,那是如虎添翼了,這就是在UI支援的強大。

相同的代碼,在WebForm和傳統Winform,也是一樣的。

本節就介紹到這裡,在這三天的思考過程和實作中遇到的問題,将由下篇文章寫一下技術要點。

     本文轉自cyq1162 51CTO部落格,原文連結:http://blog.51cto.com/cyq1162/1268786,如需轉載請自行聯系原作者