WPF與WinForm開發(fā)有什么區(qū)別?

WPF開發(fā)于WinForm之后休偶,從技術(shù)發(fā)展的角度,WPF比WinForm先進是不容置疑的辜羊。我覺得WPF相比于WinForm有下面的一些較好的特性:
解決Window Handle問題

在Windows GDI或WinForm開發(fā)中復(fù)雜的GUI應(yīng)用程序踏兜,會使用的大量的控件词顾,如Grid等。而每個控件或Grid cell都是一個小窗口碱妆,會使用一個Window handle肉盹,盡管控件廠商提供了很多優(yōu)化辦法,但還是會碰到Out of Memory或"Error Create Window handle"疹尾,而導(dǎo)致程序退出上忍。

WPF徹底改變了控件顯示的模式,控件不在使用窗口纳本,也就不會占用Window handle窍蓝。理論上,如果一個WPF只有一個主窗口的話繁成,WPF只會使用一個Window handle(如果忽略用于Dispatcher的隱藏窗口的話)吓笙。所以WPF GUI程序不會出現(xiàn)Window handle不夠用的情況。
多線程的處理

在WinForm程序開發(fā)時巾腕,最頭疼的一個問題就是面睛,worker線程修改控件的屬性而導(dǎo)致程序崩潰,而且這種非法操作并不是每次都失敗尊搬。WinForm控件提供了InvokeRequired屬性來判斷當(dāng)前線程是不是控件創(chuàng)建線程叁鉴。問題是當(dāng)控件樹很深是,這個屬性會比較慢毁嗦。

WPF開始設(shè)計的時候亲茅,就考慮到了多線程的問題。大部分的WPF類都繼承于DispatcherObject狗准。DispatcherObject實際就是對Dispatcher的一個簡單封裝克锣。Dispatcher提供了類似InvokeRequired的方法(CheckAccess)。這個方法只是比較線程的ID腔长,所以會很快袭祟。另外,Dispatcher提供了優(yōu)先隊列捞附,異步調(diào)用巾乳,Timer等功能,簡化了開發(fā)多線程GUI程序鸟召。
控件的Composition

在WinForm如果要實現(xiàn)一個有Checkbox的下拉菜單胆绊,將不得不處理復(fù)雜的Window消息。而通過WPF控件的Content Model和Layout系統(tǒng)欧募,WPF控件可以包括任何類型的控件压状,甚至.Net CLR對象。很多現(xiàn)代的控件廠商也提供了Composition的控件,實現(xiàn)方法和WPF的Content模型也比較相似种冬。WPF開發(fā)團隊?wèi)?yīng)該借鑒了Infragistics的很多想法镣丑。有了這個基礎(chǔ),開發(fā)新的WPF控件更加簡單了娱两。
XAML

個人覺得XAML應(yīng)該是WPF中比較劃時代的東東莺匠。通過XAML,我們可以用文本的方式描述復(fù)雜的Object Graph十兢。這個想法在VB中就有了趣竣,不過XAML更簡化,以便于使用工具來生成XAML纪挎。通過Command期贫,Routing Event等機制,界面設(shè)計人員和程序員有比較清楚的界限异袄。

Dependency Property

在WinForm開發(fā)中,經(jīng)常碰到的問題就是一個控件的值變了玛臂,其他控件也會跟著改變烤蜕。解決辦法,要不是通過寫代碼迹冤,要不是通過數(shù)據(jù)綁定讽营,前者是界面和代碼沒法分開,后者還不夠靈活泡徙。而WPF在這方面通過XAML可以簡單的把相關(guān)的屬性聯(lián)系起來橱鹏,通過Extension可以實現(xiàn)復(fù)雜的綁定關(guān)系。

總的來說堪藐,我覺得WPF應(yīng)該是GUI發(fā)展的一個延續(xù)莉兰,原來GUI中復(fù)雜的東西,現(xiàn)在通過簡單的文本就可以實現(xiàn)礁竞。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市模捂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌综看,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件红碑,死亡現(xiàn)場離奇詭異县耽,居然都是意外死亡镣典,警方通過查閱死者的電腦和手機兄春,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锡溯,“玉大人赶舆,你說我怎么就攤上這事〖婪梗” “怎么了芜茵?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長倡蝙。 經(jīng)常有香客問我九串,道長,這世上最難降的妖魔是什么寺鸥? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任猪钮,我火速辦了婚禮,結(jié)果婚禮上胆建,老公的妹妹穿的比我還像新娘烤低。我一直安慰自己,他們只是感情好笆载,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布扑馁。 她就那樣靜靜地躺著,像睡著了一般凉驻。 火紅的嫁衣襯著肌膚如雪腻要。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天沿侈,我揣著相機與錄音闯第,去河邊找鬼。 笑死缀拭,一個胖子當(dāng)著我的面吹牛咳短,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蛛淋,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼褐荷,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杨伙?” 一聲冷哼從身側(cè)響起限匣,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤米死,失蹤者是張志新(化名)和其女友劉穎贮庞,沒想到半個月后窗慎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捉邢,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了实幕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片昆庇。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡拱撵,死狀恐怖拴测,靈堂內(nèi)的尸體忽然破棺而出集索,到底是詐尸還是另有隱情务荆,我是刑警寧澤函匕,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布吸耿,位于F島的核電站咽安,受9級特大地震影響妆棒,放射性物質(zhì)發(fā)生泄漏糕珊。R本人自食惡果不足惜毅糟,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一喇肋、第九天 我趴在偏房一處隱蔽的房頂上張望蝶防。 院中可真熱鬧间学,春花似錦低葫、人聲如沸氮采。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽登钥。三九已至牧牢,卻和暖如春塔鳍,著一層夾襖步出監(jiān)牢的瞬間轮纫,已是汗流浹背掌唾。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工糯彬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留撩扒,地道東北人却舀。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓辆脸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親状囱。 傳聞我的和親對象是個殘疾皇子亭枷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

推薦閱讀更多精彩內(nèi)容

  • 目錄 什么是WPF猾编? WPF的歷史答倡? 為什么要用WPF及WPF作用 WPF與winForm區(qū)別瘪撇? 什么是WPF港庄? ...
    灬52赫茲灬閱讀 5,788評論 2 11
  • 前言 談起“消息機制”這個詞渤涌,我們都會想到Windows的消息機制歼捏,系統(tǒng)將鍵盤鼠標(biāo)的行為包裝成一個Windows ...
    北風(fēng)知我意閱讀 1,444評論 0 3
  • 一瞳秽、與WPF結(jié)緣 第一次接觸WPF是在2012年练俐。學(xué)習(xí)了WinForm編程之后腺晾,了解到WPF這個非常先進的UI框架...
    金戈大王閱讀 1,455評論 0 8
  • 文/恰恰天藍(lán) 我們注定孤獨終老蕉世,無一例外 沒有一人能夠教會一個人 沒有一人能夠叫醒一個裝睡的人 沒有兩片相同的樹葉...
    恰恰天藍(lán)閱讀 319評論 1 2
  • 曾經(jīng)在《第五項修煉》里看過一個故事狠轻,大概意思是說向楼,如果你11點的時候把一個細(xì)菌放在瓶子里,它每分鐘分裂一次的話菩貌,1...
    太宅治閱讀 214評論 0 0