.net - wpf範例 - xaml




面試問題:WPF開發者 (14)

WPF開發人員應該牢牢把握XAML與代碼隱藏之間的區別,並且能夠詳細討論該線將被繪製的位置。

通過數據綁定,數據模板,控件模板,樣式,觸發器,值轉換器和UserControls,能夠使用她選擇的語言設置模型,然後使用XAML顯示該模型的視圖,這對於中期來說是相當基本的任務級程序員。 (如果要求某人創造類似控制模板的東西,應該授予少量的餘地。“)

真的,WPF 有很多 ,如果不是MSDN論壇和關於這個主題的深入書籍,那麼“只是選擇它”將是一項非常艱鉅的任務。 出於這個原因,我會堅持不懈地向他人學習,並把它作為任何級別的最高要求。

對於入門級的WPF程序員,我不會期望WPF本身有任何知識,但我會要求了解面向對象原則,UI與業務邏輯的分離以及對類似事件模型的安慰。 以類似於WPF的風格(使用DockPanel容器等)佈局UI元素是一個優點。

編輯:另外,科林麥凱說。

每個WPF開發人員應該知道什麼?

入門級

  • 強大的.NET 2.0背景和願意學習!
  • 解釋依賴屬性?
  • 什麼是風格?
  • 什麼是模板?
  • 捆綁
  • 基類之間的差異:Visual,UIElement,FrameworkElement,Control
  • 視覺vs邏輯樹?
  • 屬性更改通知(INotifyPropertyChange和ObservableCollection)
  • ResourceDictionary - 由a7an添加
  • UserControls - 由a7an添加
  • 泡沫和隧道路線策略之間的區別 - 由Carlo添加
  • 為什麼微軟推出另一種標記語言?
  • XAML

中級

  • 路由事件和命令
  • 轉換器 - 由Artur Carvalho添加
  • 解釋WPF的2遍布局引擎?
  • 如何實施面板?
  • 互操作性(WPF / WinForms)
  • Blend / Cider - 由a7an添加
  • 動畫和故事板
  • ClickOnce部署
  • 剝皮/更換主題皮膚
  • 自定義控件
  • 工作線程如何更新UI?
  • DataTemplate vs HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • 不同類型的觸發器

前輩

  • 附加行為的例子?
  • 什麼是PRISM,CAL和CAG?
  • 工作線程如何更新UI?
  • WPF 3D - 由a7an添加
  • Silverlight 2和WPF的區別
  • MVVM / MVP - 由a7an添加
  • WPF性能調優
  • 像素著色器
  • Freezables的用途

任何其他“詭計”問題要問?

你期望你的WPF開發者知道混合嗎?


入門級

  • 屬性更改註釋(INotifyPropertyChange和ObservableCollection)
  • 資源字典
  • 用戶控件

中級

  • 混合/蘋果酒
  • 動畫和故事板
  • ClickOnce部署

前輩

  • WPF 3D
  • Silverlight 2和WPF的區別
  • MVVM / MVP
  • WPF性能調優
  • 像素著色器

中或高級:WinForms和WPF InterOp。


中間或者也許是高級

  • 剝皮/更換主題皮膚
  • 自定義控件

入門級

  • UX設計知識
  • 關於業務對象的聲明性綁定知識
  • 命令用法

前輩

  • 資源優化和性能調整
  • 模塊化和可擴展性
  • 異步編程模型

另一個真正基本的東西是泡沫和隧道路由策略之間的區別。


就我個人而言,我會在入門級下將'工作線程如何更新UI'。 中級,如果你真的需要。 如果入門級程序員可以理解邏輯樹和可視化樹之間的區別,他們應該了解如何從後台線程更新UI。

在我的組織中,我們做了很多沒有Blend的WPF開發。 我不是特別喜歡Blend,所以我有點偏見,但我認為Blend技能應該是一件很好的事情。


就我個人而言,我會把它們放在一個標準的開發人員構建機器前面,並要求他們完成一些任務。 沒有任何問題,只需幾個小時後看看他們的代碼是什麼樣的(或者如果任務更長的話更多)。

根據實際的現實生活編程測試的結果,對於僱傭決策,我的失敗率為零。

任務不一定非常困難。 過去我使用過一天的簡單消息,將消息保存在數據庫或XML文件和簡單的用戶界面中。 確保你要求他們把它組織得很好(因為任務足夠小,如果他們感到沮喪,可以在一個班級完成)。

在上面的問題中,我會說你不知道它們是否真的好。 一個潛在的選擇可能實際上只是閱讀這些並創建聽起來很棒的罐裝答案。 所有這些都表明候選人可以談話,但是工作本身的重點在於他們是否可以走路。


我將綁定和轉換器放入入門級,因為這是您在WPF中花費大量時間的方式。


我很驚訝沒有人提到XAML的基本知識。 了解XAML是什麼,以及使用XAML而不是圖形設計工具進行基本編輯的能力。 中級開發人員應該能夠使用像XAMLPad這樣的工具來打造表格/圖形原型。



樣式為您提供了一種機制,可以跨應用程序應用主題,並在您希望的特定實例中覆蓋該主題。 樣式被定義為資源; 實際上,它們是在定義資源的XAML文件的同一部分中定義的。


  • 線程和調度程序之間的關係是什麼?
  • Freezables的目的是什麼?
  • 屬性和依賴屬性之間有什麼區別? 為什麼使用這個或另一個?

  • 轉換器(簡單和多)。
  • 互操作性。

我想我會更喜歡一個會了解Blend的開發者 。 他/她可以很輕鬆地與設計師進行交流,也可以比使用xaml寫作更快速地完成一些基本的設計工作。

該列表很有趣,也許鏈接到主題將有所幫助。

乾杯





wpf