每个WPF开发人员应该知道什么?
Entry Level
-
强大的.NET 2.0背景并愿意学习!
-
解释依赖属性?
-
什么是风格?
-
什么是模板?
-
绑定
-
基类之间的差异:Visual,UIElement,FrameworkElement,Control
-
Visual vs Logical树?
-
属性变更通知(INotifyPropertyChange和ObservableCollection)
-
ResourceDictionary - 由a7an添加
-
UserControls - 由a7an添加
泡沫和隧道路由策略之间存在差异 - 由Carlo添加 -
为什么微软推出了另一种标记语言?
-
XAML
Mid-level
-
路由事件和命令
-
转换器 - 由Artur Carvalho添加
-
解释WPF的2遍布局引擎?
-
如何实施面板?
-
互操作性(WPF / WinForms)
-
动画和故事板
-
剥皮/主题
-
自定义控件
-
工作线程如何更新UI?
-
DataTemplate与HierarchicalDataTemplate
-
ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
-
不同类型的触发器
Senior
-
附加行为的例子?
-
什么是PRISM,CAL&CAG?
-
工作线程如何更新UI?
-
WPF 3D - 由a7an添加
-
Silverlight 2和WPF之间的差异
-
MVVM / MVP - 由a7an添加
-
WPF性能调优
-
像素着色器
-
Freezables的目的
还有其他任何“技巧”问题吗?
你希望你的WPF开发人员知道混合吗?
20 回答
我很惊讶没有人提到过XAML的基本知识 . 了解XAML是什么,以及使用XAML而不是图形设计工具进行基本编辑的能力 . 中级开发人员应该能够使用像XAMLPad这样的工具来打造表单/图形原型 .
就个人而言,我会让他们坐在标准的开发者构建机器前面,并要求他们完成一些任务 . 没问题,只需看几个小时后他们的代码是什么样的(或者如果任务更长,则更多) .
根据实际现实生活规划测试的结果,我在制定招聘决策方面的失败率为零 .
任务不一定太困难 . 我过去使用过日期应用程序的简单消息,消息保存在数据库或XML文件和简单的用户界面中 . 确保你要求他们很好地构建它(因为任务足够小,如果它们感到倾斜,它们都可以在一个 class 中完成) .
在上面的问题中,我会说你无法确定它们是否真的有任何好处 . 一个潜在的候选人实际上可以只是阅读这些并创建听起来很棒的 jar 头答案 . 所有这些表明候选人可以说话,但工作本身的重要性在于他们是否可以走路 .
我将绑定和转换器放在入门级,因为这是你在WPF上花费大量时间的方式 .
在我看来相当不错的清单 .
但是我不会在面试时提出棘手的问题 . 面试给自己足够的压力,技巧问题甚至可以混淆高技能的人 .
就个人而言,我会在入门级下放置“工作线程如何更新UI” . 中级,如果你真的需要 . 如果入门级程序员可以理解逻辑树和可视树之间的区别,他们应该了解如何从后台线程更新UI .
在我的组织中,我们在没有Blend的情况下进行了大量的WPF开发 . 我不是特别喜欢Blend,所以我有点偏颇,但我认为Blend技能应该是一个很好的选择 .
WPF开发人员应该牢牢把握XAML与代码隐藏的分离,并能够详细讨论绘制该行的位置 .
能够使用她选择的语言设置模型,然后使用XAML通过数据绑定,数据模板,控件模板,样式,触发器,值转换器和UserControls显示该模型的视图是一个相当基本的任务级程序员 . (虽然如果要求某人“从心里创建类似控制模板的东西”,应该给予少量余地 . )
真的,在WPF中有很多,如果它不是't for the MSDN forums and in-depth books on the subject, it'那么"just pick it up."由于这个原因,我会将毅力和从别人那里学习的能力作为任何级别的最高要求 .
对于入门级WPF程序员,我不希望任何WPF本身的知识,但我需要知识面向对象的原则,UI与业务逻辑的分离,以及与类似事件模型的舒适性 . 以类似于WPF(使用DockPanel容器等)的样式布置UI元素的经验是一个优点 .
编辑:此外,科林麦凯说 .
GUI编程/图形体验和cs知识怎么样?如果是全职工作,那没关系恕我直言,如果他(或她)拥有强大的背景,那么这个家伙必须花一些时间学习WPF .
Entry Level
属性更改NOtification(INotifyPropertyChange和ObservableCollection)
ResourceDictionary
UserControls
Mid Level
Blend / Cider
动画和故事板
ClickOnce部署
Senior
WPF 3D
Silverlight 2和WPF之间的差异
MVVM / MVP
WPF性能调优
像素着色器
线程和Dispatchers之间有什么关系?
Freezables的目的是什么?
属性和依赖属性之间有什么区别?为什么要使用其中一个?
转换器(简单和多个) .
互操作性 .
我想我更喜欢一个知道 Blend 的开发者 . 他/她可以与设计师轻松交流,也可以比在xaml中写作更快地完成一些基本的设计师工作 .
列表很有趣,也许链接到主题会有所帮助 .
干杯
另一个非常基本的事情是泡沫和隧道路由策略之间的区别 .
入门级
UX设计知识
业务对象的声明性绑定中的知识
命令用法
前辈
资源优化和性能调优
模块化和可扩展性
异步编程模型
中级或高级:WinForms和WPF InterOp .
中年或高级
剥皮/主题
自定义控件
我认为WPF应用程序的生命周期 - 从创建到运行时应该包含在初级问题中 . 不知道它,很难相信一个是真正的WPF开发者 .
我一般会使用WPF部署扩展ClickOnce部署,因为了解每个模型的限制和特性(ClickOnce,XBAP,仅限浏览器)是很好的 . 把它放在中等水平似乎是公平的 .
DataTemplate与HierarchicalDataTemplate
ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
不同类型的触发器
如何通过StoryBoards进行动画制作
样式提供了一种机制,您可以在应用程序中应用主题,并在您希望的特定实例中覆盖该主题 . 样式定义为资源;实际上,它们是在XAML文件的同一部分中定义的,其中定义了资源 .
放入数据模板选择器:http://www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector很好的帮助MVVM根据值交换模板 .
了解单元测试及其对如何使用WPF的影响是我在入门级别上的一项基本技能 . 人们可以了解细节,但如果他们没有考虑过软件设计的基础知识那么你就会遇到问题 .