WPF和WinForm的区别, 数据驱动与事件驱动的优势对比
Winform中針對界面的元素進(jìn)行操作, 所有業(yè)務(wù)都關(guān)聯(lián)在當(dāng)前窗口的后臺, 而在此之前, 無奈你是雙擊事件的添加方式、還是后臺綁定事件的方式,
你都需要給每個元素一個固定規(guī)范的名稱, 然后進(jìn)行相關(guān)的數(shù)據(jù)操作。這種方式稱之為事件驅(qū)動型。
WPF的不同之處:
1. WPF不僅僅在支持原生的Winform舊模式的操作下,升級了一種全新的模式,也是就是MVVM模式, 不再為每個元素添加固定的名稱, 然后通過后臺進(jìn)行事件進(jìn)行業(yè)務(wù)代碼編寫。
2. 一套擴展能力超強的UI界面,與早期的GDI+/GDI不同。WPF是基于DirectX引擎的,支持GPU硬件加速,在不支持硬件加速時也可以使用軟件繪制。
高級別的線程繪制可以提高使用者的體驗。自動識別顯示器分辨率并進(jìn)行縮放。
3. 有諸多的新功能,諸如: 樣式、觸發(fā)器、命令、動畫、模板 。
Winform模式帶來的常見的開發(fā)問題:
1.為了滿足winform用戶界面的需求, 所以也自然誕生了很多公司或者個人為其開啟一套經(jīng)常UI的統(tǒng)一處理的控件, 如市面上常見的有DevExpress 、DotenetBar 等等。
所以自然就暴露出了新的問題, 使用了新的控件、那么自然會有一套新的數(shù)據(jù)獲取方式、又需要去適應(yīng)新的整套開發(fā)方式、而使用新的控件只是為了滿足winform界面不豐富、或者更加強大的功能。
2.暫且不考慮第三方控件帶來的新的問題、winform本身的開發(fā)模式、就存在著天然的缺陷, 舉個例子, 按照常規(guī)的方式我們給一個winform控件進(jìn)行數(shù)據(jù)綁定操作。
按照事件驅(qū)動的模式, 他則是需要根據(jù)控件名來獲取我們原始綁定的數(shù)據(jù)。 【 界面與數(shù)據(jù)完全耦合, 取數(shù)據(jù)在綁定之前已經(jīng)知道數(shù)據(jù)的結(jié)構(gòu), 在獲取的數(shù)據(jù)的時候卻還要回過頭去通過控件來找數(shù)據(jù)】
數(shù)據(jù)驅(qū)動的理念是什么?
什么是數(shù)據(jù)驅(qū)動UI呢?我們知道傳統(tǒng)的GUI界面都是由windows消息通過事件傳遞給程序,程序根據(jù)不同的操作來表達(dá)出不同的數(shù)據(jù)體現(xiàn)在UI界面上,這樣數(shù)據(jù)在某種程度上來說,
受到很大的限制。WPF中是數(shù)據(jù)驅(qū)動UI,數(shù)據(jù)是核心,處于主動的,UI從屬于數(shù)據(jù)并表達(dá)數(shù)據(jù),是被動的。WPF數(shù)據(jù)第一,控件第二。盡管WPF中,數(shù)據(jù)處以第一, 但是對于UI來說,
WPF中的UI仍然是其出色的一部分。
總結(jié)
以上是生活随笔為你收集整理的WPF和WinForm的区别, 数据驱动与事件驱动的优势对比的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BTE的一些知识
- 下一篇: FPGA开发全攻略——IP核