CYQ.Data 支持WPF相關的數據控件綁定(2013-08-09)


事件的結果

經過多天的思考及忙碌的開發及測試,CYQ.Data 終於在UI上全面支持WPF,至此,CYQ.Data 已經可以方便支持wpf的開發,同時,框架仍保留最低.net framework2.0版本的支持。

支持WPF的起因:

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下的測試案例:

 示例界面:內容包括WPF下增刪改查:

 

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

 

使用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
        {
            get;
            set;
        }
        public bool IsEnabled
        {
            get;
            set;
        }
        public string TypeName
        {
            get;
            set;
        }
        public DateTime CreateTime
        {
            get;
            set;
        }
    }
添加(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)
        {
            using (Users u = new Users())
            {
                u.SetAutoParentControl(this);
                if (u.Update(txtID.Text, true))
                {
                    Load();
                }
            }
        }
刪除(Delete按鈕):只需要一個ID。
  private void btnDelete_Click(object sender, RoutedEventArgs e)
        {
            using (Users u = new Users())
            {
                u.Delete(txtID.Text);
            }
        }
單個查詢(Fill):根據ID查詢后,自動批量賦值。
private void btnFill_Click(object sender, RoutedEventArgs e)
        {
            using (Users u = new Users())
            {
                if (u.Fill(txtID.Text))
                {
                    u.SetToAll(this);
                }
            }
        }
列表控件綁定(默認窗體Loaded事件調用):直接支持綁定WPF的DataGrid控件。
void Load()
        {
            using (Users u = new Users())
            {
                u.Select().Bind(gvUsers);
            }
        }

總結: 

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

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

 

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

 

剛小龍同學發布了使用CYQ.Data 開發的項目案例,看了一下,覺的不錯: http://fadeiwan.com/ 花地灣文化中心,供大伙欣賞。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM