此問題旨在提供開發WPF應用程序時常見陷阱,「疑難問題」或設計問題的解決方案列表。只要有解釋爲什麼它最好,這也可以包含適當的設計模式。應根據問題類型的普遍程度對答覆進行投票。這裏是規則:WPF開發中最常犯的錯誤是什麼?
- 每個帖子一個響應。這顯然會給最常見的問題排名最高。
- 最好提供已經居住在SO土地某處的相關帖子或解決方案的鏈接。
此問題旨在提供開發WPF應用程序時常見陷阱,「疑難問題」或設計問題的解決方案列表。只要有解釋爲什麼它最好,這也可以包含適當的設計模式。應根據問題類型的普遍程度對答覆進行投票。這裏是規則:WPF開發中最常犯的錯誤是什麼?
問題:到目前爲止,我所看到的主要問題是,人們開始在WPF在頭腦裏的WinForm的UI模型編碼。
解決方案:WPF是不是的WinForms/MFC/Win32的所以忘了所有的UI端假設和規範你已經使用和教訓,同時開發Windows,去年20歲以上基於UI。
理解此平臺背後的核心思想非常重要,本鏈接-Major UI Development Breakthroughs in the new WPF platform將深入介紹WPF。其中列出了以下幾點。突出顯示的是我最喜歡的這個平臺的功能。
獲取數據結合於元件ContentControls(視窗,用戶控件等。)定義的屬性和屬性之間正常工作構成控件內容。例如。比方說,我有一個窗口,看起來像這樣:
<Window x:Name="MyWindow"....>
<TextBlock Text="{Binding Path=PropertyDefinedInMyWindow}" />
</Window>
問題:不管你如何經常更新「PropertyDefinedInMyWindow」它永遠不會體現在TextBlock中。 SO Question
解決方案:您需要設置窗口的DataContext或告知財產住在哪個元素的結合。SO Solution
問題/疑問:SO Question
怎樣在我的用戶 控制用戶暴露的組件的一個DependencyProperty ?有很多 的例子如何通過創建一個新的依賴關係 屬性和綁定,但如何 暴露如 FrameworkElement.ActualWidthProperty的只讀屬性如何公開正常 屬性的示例。
解決方案:你需要暴露一個新的只讀的DependencyProperty在用戶控件,並更新它,每當你載「組件」的ActualWidthProperty得到更新。這需要使用DependecyPropertyDescriptor來獲知發生的變化。 SO Solution
問題:使用M-V-VM設計模式,我在哪裏實例化視圖?這是否發生在ViewModel? SO Question 1,SO Question 2
解決方案:使用M-V-VM圖案時,而不是其他常見的模式如M-V-C WPF發展是最有效的。趨勢是將ViewModel與處理打開和創建視圖以及模型的控制器相同。在M-V-VM中情況並非如此。意見是唯一應該創建意見的地方。 ViewModels應該對視圖一無所知。 SO Answer 1,SO Answer 2
Ivan Towlson在這個話題上做了一個很好的演講。大部分的資料是在他的幻燈片,你可以從這裏得到: http://hestia.typepad.com/flatlander/2008/08/codecamp-2008-.html
沒有意識到字體渲染有多壞在項目的開始和他們受不了看它的客戶被告知因爲一切看起來都很模糊。
在視圖中使用代碼 - 使嬰兒FSM哭泣。
隨着越來越多的商店開始關注WPF,這對許多開發人員來說都是非常寶貴的資源。 – 2008-11-27 04:03:08