182

每个 WPF 开发人员都应该知道什么?

入门级

  • 强大的 .NET 2.0 背景并愿意学习!
  • 解释依赖属性?
  • 什么是风格?
  • 什么是模板?
  • 捆绑
  • 基类之间的区别:Visual、UIElement、FrameworkElement、Control
  • 视觉与逻辑树?
  • 属性更改通知(INotifyPropertyChange 和 ObservableCollection)
  • ResourceDictionary - 由 a7an 添加
  • 用户控件 - 由 a7an 添加
  • 气泡和隧道路由策略之间的区别 - 由 Carlo 添加
  • 为什么微软要引入另一种标记语言?
  • XAML

中级

  • 路由事件和命令
  • 转换器 - 由 Artur Carvalho 添加
  • 解释 WPF 的 2-pass 布局引擎?
  • 如何实现面板?
  • 互操作性(WPF/WinForms)
  • 混合/苹果酒- 由 a7an 添加
  • 动画和故事板
  • ClickOnce 部署
  • 皮肤/主题
  • 自定义控件
  • 工作线程如何更新 UI?
  • DataTemplate 与 HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • 不同类型的触发器

高级的

  • 附加行为的例子?
  • 什么是棱镜、CAL 和 CAG?
  • 工作线程如何更新 UI?
  • WPF 3D - 由 a7an 添加
  • Silverlight 2 和 WPF 之间的差异
  • MVVM/MVP - 由 a7an 添加
  • WPF 性能调优
  • 像素着色器
  • Freezables 的目的

还有其他“技巧”问题要问吗?

您希望您的 WPF 开发人员了解 blend 吗?

4

20 回答 20

41

I'm surprised no one has mentioned basic knowledge of XAML yet. Knowing what XAML is, and the ability to do some basic editing using XAML rather than a graphical design tool. Mid-level developers should be able to knock up form / graphic prototypes using a tool like XAMLPad.

于 2008-09-17T08:59:44.460 回答
34

就我个人而言,我会让他们坐在标准的开发人员构建机器前,并要求他们完成一些任务。没有问题,只需在几个小时后看看他们的代码是什么样的(如果任务更长,则更多)。

根据实际的现实生活编程测试的结果,我做出招聘决定的失败率为零。

任务不必太难。过去,我使用过一个简单的每日消息应用程序,消息保存在数据库或 XML 文件和一个简单的用户界面中。确保你要求他们很好地组织它(因为任务足够小,如果他们觉得有兴趣,可以在一个班级里完成)。

在上面的问题中,我想说你无法很好地了解它们是否真的有好处。一个潜在的候选人实际上可以阅读这些并创建听起来很棒的罐头答案。所有这些都表明候选人可以说是可以说的,但对工作本身来说,重要的是他们是否会走路。

于 2009-07-12T12:21:07.993 回答
23

我会将绑定和转换器放在入门级,因为这就是您在 WPF 中花费大量时间的方式。

于 2008-09-15T21:50:32.063 回答
20

在我看来相当不错的清单。
但是我不会在面试时问棘手的问题。面试本身就有足够的压力,技巧性的问题即使是技术高超的人也会感到困惑。

于 2008-09-12T11:41:22.490 回答
15

就个人而言,我会将“工作线程如何更新 UI”放在入门级下面。中级,如果你真的需要的话。如果一个入门级的程序员能够理解逻辑树和可视化树之间的区别,他们应该明白如何从后台线程更新 UI。

在我的组织中,我们在没有 Blend 的情况下进行了很多 WPF 开发。我不是特别喜欢 Blend,所以我有点偏见,但我认为 Blend 技能应该是一个不错的选择。

于 2008-10-03T13:42:58.977 回答
9

WPF 开发人员应该牢牢掌握将 XAML 与代码隐藏分开的能力,并且能够详细讨论该线的绘制位置。

能够以她选择的语言设置模型,然后使用 XAML 通过数据绑定、数据模板、控件模板、样式、触发器、值转换器和用户控件来显示该模型上的视图,这对于 mid 来说是一项相当基本的任务级程序员。(尽管如果要求某人“发自内心地”创建控制模板之类的东西,则应给予少量余地。)

确实, WPF 中有很多内容,如果没有 MSDN 论坛和有关该主题的深入书籍,“随便捡起来”将是一项艰巨的任务。出于这个原因,我认为毅力和向他人学习的能力是任何级别的最高要求。

对于入门级 WPF 程序员,我不期望 WPF 本身有任何知识,但我需要了解面向对象的原则、将 UI 与业务逻辑分离以及熟悉类似的事件模型。以类似于 WPF(使用 DockPanel 容器等)的样式布置 UI 元素的经验是一个加分项。

编辑:另外,科林麦凯所说的。

于 2009-07-12T12:05:20.377 回答
8

一般的 GUI 编程/图形经验和 cs 知识怎么样?如果是全职工作,恕我直言,如果他(或她)有很强的背景,他是否必须在前几个月花一些时间学习 WPF,这并不重要。

于 2009-03-16T15:35:36.783 回答
7

入门级

  • 属性更改通知(INotifyPropertyChange 和 ObservableCollection)
  • 资源字典
  • 用户控件

中级

  • 混合/苹果酒
  • 动画和故事板
  • ClickOnce 部署

高级的

  • WPF 3D
  • Silverlight 2 和 WPF 之间的差异
  • MVVM/MVP
  • WPF 性能调优
  • 像素着色器
于 2008-09-12T18:12:32.003 回答
7
  • 线程和Dispatchers是什么关系?
  • Freezables的目的是什么?
  • 属性和依赖属性有什么区别?为什么要使用一个或另一个?
于 2009-04-22T14:10:26.553 回答
5
  • 转换器(简单和多)。
  • 互操作性。

我想我更喜欢会知道Blend的开发人员。他/她可以轻松地与设计师交流,并且比仅用 xaml 编写更快地完成一些基本的设计师工作。

该列表很有趣,也许指向主题的链接会有所帮助。

干杯

于 2008-09-12T13:38:07.030 回答
4

另一个真正基本的事情是气泡和隧道路由策略之间的区别。

于 2009-08-17T21:29:08.113 回答
3

入门级

  • UX设计知识
  • 业务对象的声明式绑定知识
  • 命令用法

高级的

  • 资源优化和性能调优
  • 模块化和可扩展性
  • 异步编程模型
于 2010-07-20T05:51:34.000 回答
2

中级或高级

  • 皮肤/主题
  • 自定义控件
于 2008-10-01T18:24:56.427 回答
2
  • DataTemplate 与 HierarchicalDataTemplate
  • ItemsControl vs ItemsPresenter vs ContentControl vs ContentPresenter
  • 不同类型的触发器
  • 如何通过 StoryBoard 制作动画
于 2009-06-13T17:43:53.930 回答
2

中级或高级:WinForms 和 WPF InterOp。

于 2008-09-14T09:59:35.743 回答
1

我认为 WPF 应用程序的生命周期——从创建到运行时应该包含在初学者级别的问题中。在不知情的情况下,很难相信一个真正的 WPF 开发人员。

于 2008-10-01T15:13:00.040 回答
1

我一般会使用 WPF 部署扩展 ClickOnce 部署,因为最好了解每个模型的限制和特性(仅限 ClickOnce、XBAP、浏览器)。不过,将其置于中等水平似乎是公平的。

于 2008-10-02T09:19:33.937 回答
1

了解单元测试及其对您如何使用 WPF 的影响是我将在入门级时提出的一项基本技能。人们可以学习细节,但如果他们没有考虑过软件设计的基础知识,那么你就有问题了。

于 2011-04-11T13:52:07.790 回答
1

放入数据模板选择器:http : //www.switchonthecode.com/tutorials/wpf-tutorial-how-to-use-a-datatemplateselector 对 MVVM 根据值换出模板有很大帮助。

于 2010-11-28T13:55:33.560 回答
1

样式提供了一种机制,让您可以在应用程序中应用主题并在您想要的特定实例中覆盖该主题。样式被定义为资源;事实上,它们是在定义资源的 XAML 文件的同一部分中定义的。

于 2010-03-25T10:53:53.050 回答