2013-09-22 73 views
7

實際上,我已經開始學習WPF了。我有幾個月的開發Windows Forms應用程序的經驗。雖然,我得到了WPF應用程序的含義,但仍然無法根據它們的輸出來區分兩者之間的差異。顯示WPF和Windows窗體應用程序的區別

參照這個Link: Device Independent Pixel (DPI),我瞭解到,無論何時操作系統呈現WPF應用程序,它都會根據其分辨率自行管理其大小。

因此,爲了檢查這種差異,我在兩個框架中創建了兩個演示應用程序,並更改了分辨率..但是我沒有找到任何令人滿意的區別。這可以解釋它是一個WPF應用程序,這是一個Windows窗體應用程序。

它不會在最大化時創建任何滾動條,並且不會在更改分辨率時使按鈕變大或變小。

我已經閱讀過某些地方的視覺 工作室  2010已被重寫在WPF中。但在我的實驗中,我看到了(改變桌面的分辨率),它使文本和圖形變得不可讀/模糊。在重新調整窗口大小時,除了菜單欄外,所有內容都隱藏起來了。菜單欄內容正在改變其定位,例如,最右邊的一個菜單項正在向下移動。爲什麼?

請讓我正確&也解釋一點點(這個顯示問題)。

+0

我不知道你在說什麼。 WPF獨立於分辨率。 winforms不是。 WPF不是「模糊」,如果你有一個WPF應用程序,只是[改變字體渲染模式](http://stackoverflow.com/a/18091149/643085)看起來很模糊。 –

+1

WPF和WinForms之間的區別是,WPF不吸不是完全無用的說明(這裏)(http://stackoverflow.com/a/18931755/643085)。不,如果你使用Visual Studio設計器創建一個WPF應用程序,它不會像解析[這裏](http://stackoverflow.com/a/18927377/643085)那樣是獨立於分辨率的。您需要手動鍵入XAML並根據您的需要使用適當的容器。 –

+0

@HighCore:非常感謝您的回覆!你想說,應該按照800 * 600硬編碼我們的應用程序的高度和寬度,或者像明智地在css中編寫媒體查詢之類的東西!?!? – user2804762

回答

14

要正確回答這個問題,我可能不得不在這裏寫一整章,但我保持簡短。從我迄今爲止學到的,WPF應用程序和Windows Forms應用程序之間存在三個主要區別。

  1. 佈局: WPF爲我們安排視覺元素提供了更大的靈活性。它有一個聰明的幕後機制,可自動動態地找到每個元素的位置,而無需手動更新佈局。例如:
    • 作爲一個TextBox用戶類型,它的寬度可能會增加,並推動其他元素保持距離,或者它可能會推動一些元素融入到新行(就像你看到的菜單欄)
    • 隨着大小的控件更改會影響其他元素的可用空間,因此其大小和位置可能會相應更改。
    • 重新調整窗口大小或更改分辨率時,會立即更新佈局並更改元素的大小以填充或適合空間。 (不要指望一個按鈕的大小,當你一半分辨率提高一倍。它不這樣的。基本上,它首先測量每一個元素,然後安排他們)

Here you'll find out more about Layouts.

  1. Rendering:在Windows窗體應用程序和WPF應用程序中嘗試使用30x30 TextBoxes的網格。不管你編寫WPF多麼混亂,它仍然比Windows Forms快得多,如果你寫得正確,它不會眨眼一秒。想象一下其中的一些動畫,效果,觸發器和樣式層次,仍然比Windows窗體快得多。

    • 另外它使用double類型的Sizings,因此你可能會看到邊緣模糊有時,但它可以避免(SnapToDevicePixels)。 備註:爲避免Windows窗體應用程序中的速度下降和閃爍,應將表單的DoubleBuffer設置爲「true」。
  2. 最後也是最重要的:重點介紹:這似乎有些奇怪,但是當你選擇WPF,你必須停止在Windows窗體思(許多活動和控件的名稱和批號的的代碼),並開始思考WPF(綁定,命令,資源,樣式,模板,轉換器,DependencyProperties及其回調)。

    • WPF的真正力量在於在「查看」和「邏輯」的分離,一旦你得到了它的竅門,還有你如何呈現「查看」沒有限制。
    • 更重要的是,MVVM pattern使得視覺複雜程度最高的應用程序非常簡單並且易於開發。

如果你打算切換到WPF,你做出正確的決定。 始終堅持計劃!即避免代碼後面(在.xaml.cs文件編碼),XAML名稱(除非只在XAML使用)和UI事件儘可能。改爲使用WPF能力。

5

Windows窗體(的WinForms)和的Windows Presentation Foundation(WPF)是構建用戶界面的應用程序的兩種不同的方式。 Windows窗體是舊技術,其控件可在System.Windows.Forms namespace中找到。 WPF是一種較新的技術,其控件可在System.Windows.Controls命名空間中找到。

WPF

優點:

  • 強大的造型和外觀結構
  • 輕鬆創建自己的外觀和感覺
  • 是否支持Windows窗體
  • 未來的技術發展Windows   Vista應用程序
  • 重用現有代碼
  • 非常先進的數據綁定可能

缺點的能力:

  • 聲明與程序代碼
  • 需要的.NET Framework 3。0
  • 相較於Windows窗體,仍處於發展階段
  • 需要先進的圖形Dx9中兼容的視頻卡

Windows窗體

優點:

  • 大量文檔,在互聯網上找到
  • 大量的例子
  • 是否支持WPF

缺點:

  • 多久這種支持? (我讀過微軟現在只是開發WPF,只維護Windows窗體的地方)。
  • 設計您自己的外觀和在應用程序中感受到的是大量的工作。
相關問題