很多人都說 WPF 設計非常先進,那麼為什麼說 WPF 的設計很先進?
關於WPF我談以下感想:希望對你有幫助!
其中第一條是WinForm最致命的缺陷,採用事件響應機制,無可避免地難以做到View層和Controller層分離,也就無法真正實現MVC架構。而WPF採用數據綁定(Data Binding)解決了這個問題,這種數據驅動的思想後來被廣泛應用於Web開發,比如AngularJS、Vue.js等等。基於數據綁定,WPF用路由事件代替了WinForm的事件系統,增加了命令系統,增加了功能強大的控制項模板和數據模板,以及方便的繪圖和動畫介面。
可以說,WPF在設計理念上比WinForm前進了一大步。下面對其中的幾個特性做簡單的介紹。
partial
x:Name
綁定的源可以是各種各樣的類型,比如對象、列表、http://ADO.NET對象、XML、LINQ檢索結果等等。數據在綁定的源和目標之間傳輸的時候,可以添加數據校驗和數據轉換,從而實現各種各樣的需求。
粗略點說,一個看起來漂亮的wpf程序,比起一個丑的,他的testability和maintainability都更好,這就是一個設計的好的框架的威力,讓那些不喜歡好好跑自動化測試的人用的很彆扭。
這些東西具體體現在各種圍繞著mvvm構建出來的功能上。要是dependency property可以是C#的語法的話,那就完美了。
要說先進的話,還是剛出來時先進,現在都被學去了,而且以js的靈活性,在mvvm方面已經做的比wpf好多了。
xaml本來就是學的html的一點東西,能比以往的gui更容易的換主題,但是論強類型xaml強,論靈活性還是html強多了。
但是wpf由於IDE的統一完善(就VS嘛),開發還是最方便的
風口確實已經到web和移動端了,但是有些領域還是需要桌面的,也確實沒有啥新的桌面GUI出來,所以真正的桌面端也就玩玩.net系和qt了。
當然會有提electron的。我說的真正的桌面端如果要做成web的話,是會有很多麻煩的,許可權不足,需要各種瀏覽器的插件,可能需要花大價錢來買這些插件之類的事情,用electron也是有麻煩的,而且基於chrome的東西性能也確實會差很多,在渣渣機子上會很卡,所以真正的桌面端還是需要的。
我這裡wpf和.net core的服務端還是主要路線,主要產品,web端手機端也都是基於.net core的服務端做的,我們都在做,但是我們行業人手不夠,只有wpf這種穩定方便的才能作為主要界面工具。
有人在輪子哥的回答下提出了寫質疑
我要回復的是, wpf這十幾年,不比web端穩定多多多多多多了? 人家gtk123,qt12345 quick qml,wpf有分版本么?
office沒用wpf可能有別的理由,但是wpf能不能做office,你可以看telerik的demo啊,有個類word demo還是蠻完善的,從ribbon界面到富文本間的各種功能,看過這個就能肯定wpf一定能做word,這還不夠么?
其他的他下面都有人回了
WPF 在它誕生的 2006 年非常先進,那還是 Windows 桌面應用的輝煌年代,別說 Chrome,連 IE7 都沒有發布。那時諾基亞還是手機老大,谷歌還沒退出中國,禿布斯的蘋果還在憋大招,被微軟按著打。
醒醒,現在馬上就 2020 年了,WPF 里諸如 XAML、數據綁定、事件系統等的閃光點已經傳承到了現在的 Web 系技術棧上。去看看一線大公司里的 GUI 開發者們在維護什麼框架吧——React、Vue、Flutter,沒一個是把 Windows PC 當作主戰場的。風口在哪,最頂尖的開發者們就會流入造什麼領域的輪子。WPF 背後經典 PC 桌面應用的風口顯然已經過了。我相信下一代的 GUI 生產力應用風口,一定是基於開放、跨平台、低門檻的 Web 混合式技術棧的(注意我說的是廣義的 Web 技術棧,不只是 Electron 這種套殼技術)。基於這樣的技術棧,普通的 Web 前端工程師也能開發工業級生產力 GUI 應用,並移植到龍芯這樣的國產 CPU 上運行,這光是想想就很讓人期待了。
從 1984 年的 Macintosh 開始,GUI 領域裡的模仿、借鑒和創新就從來沒有停止過。你當然可以說現在流行的 Web 框架抄了 WPF,但別忘了微軟的 GUI 抄了蘋果,蘋果的 GUI 又抄了施樂。一門發布時思想或工程技術上領先的技術,很快就會被借鑒、模仿、改進,從而衍生或啟發出新一代的產品,完成自己的歷史使命。從這個角度上來說,WPF 已經很了不起了。
科技進步的過程里,那些不斷湧現出來的先進新技術,都不過是時代潮流里的一朵朵小浪花。我們自己又何嘗不是這樣呢?
當然了,以上所有技術,應該都不如鴻蒙的全場景分散式技術棧。沸騰!
WPF先進之處就體現在影響了一個時代!!!
大名鼎鼎的就是MVVM設計模式,在當時Winform的輝煌時代,改變了大家對桌面應用開發的思維方式,從事件驅動轉換為數據驅動,之後被借鑒到其他技術領域,特別是現在的大前端技術,所以如果學習WPF就不能存有Winform的傳統設計思維
另外了解了MVVM模式後,對現今流行的前端框架簡直手到擒來。
WPF -&> Knockout -&> Angular -&> Vue ,追隨者說明 MVVM 確實優秀,分離了關注點減少了UI與業務邏輯的耦合性,缺點也有複雜的業務屬性泛濫很難排查業務流向。
有了webassambly ,siverlight 會不會重生
其實吧,有wine就可以了,
一點都不卡,真的
我來晒晒桌面
頂多加上matlab,nx,cadance什麼的
※要開發一個倉庫管理軟體,應該選擇c#(winform/wpf)還是c++(qt)?※wpf求教導,用數據綁定,slider 和 3個radiobutton 相互聯動?
TAG:圖形用戶界面 | Windows開發 | WindowsPresentationFoundationWPF | NET開發 |