代码之家  ›  专栏  ›  技术社区  ›  SwDevMan81 Chris Barlow

WPF学习曲线有多差?[关闭]

  •  45
  • SwDevMan81 Chris Barlow  · 技术社区  · 15 年前

    我读过很多人说 WPF 学习曲线相当陡峭(取决于你的知识或经验)。似乎大多数人都可以让演示或启动项目工作,然后发现自己在处理各种各样的问题时陷入了一段时间的困境。我很好奇什么是特别难以学习或理解的(层,sdk, XAML ,数据绑定等),如果您对如何避免/减轻某些困难主题有任何建议?

    11 回复  |  直到 13 年前
        1
  •  35
  •   Rhys    15 年前

    WPF是不同的,它是无法摆脱的。

    我的主要建议是不要害怕XAML;拥抱它,这就是力量所在!

    让我解释一下:

    为了提高工作效率,我更喜欢在文本视图中编写XAML,因为我可以在几个按键中创建窗口的纯布局。如果您经常输入代码,那么这是开发窗口的一种非常快速的方法。然后您可以使用可视化编辑器使它看起来漂亮。

    如果您记住XAML的每个元素 new “该对象和该xaml元素的每个属性都是该对象的属性,您可以将xaml视为对象创建和属性分配。非常类似于编写代码。

    如果你花太多的时间在视觉设计师身上,那么你就不会欣赏这一点,对某些人来说,这会减慢学习的速度。

    最近的 Hanselminutes 播客可能会让你感兴趣。

    我也强烈建议您尽早学习视图和视图模型的概念,即使您不订阅其中的所有内容。 CompositeWPF 因为这确实有帮助。

        2
  •  17
  •   Peter Mortensen Sumit Kumar    15 年前

    Karsten Januszewski的一篇好文章叫 Hitting the Curve: On WPF and Productivity 你可能会发现有趣的是:

    让我们明确一点:WPF带有 曲线。我现在看了很多 开发人员达到了这一目标。以及 曲线很陡。我们在讨论 两周到两个月的曲线 取决于开发商和 经验/直觉水平 开发者有。会有一些时刻的 完全的迷惑和大量的 照明时刻。马上就到了。 痛苦和愉快,如果 开发者乐于发现 一个深入而深思熟虑的用户界面 平台。它一下子就熟悉了, 外星人。有许多相似之处 其他UI开发模式:样式 感觉像CSS,有点像。XAML 代码隐藏的感觉就像是ASP.NET。 某种程度上。3D就像是DX或OpenGL, 好吧。路由事件感觉 .NET事件,差不多。依赖的 属性就像属性,好吧 某种程度上。名单还可以继续。但是 Admidst这些(有点)熟悉 隐喻有那么多外来的 必须掌握的概念: 控制模板、故事板, 数据绑定立刻浮现在脑海中。 这不是一个微不足道的曲线 希望在第一天或 即使是第1周或第1个月。

    但这一切都值得!;)

        3
  •  11
  •   Peter Mortensen Sumit Kumar    15 年前

    学习WPF的困难与其说是API,不如说是模型。这是一个非常不同的心理模式,你会用 Windows Forms .

    通常,数据绑定到对象的属性,而不是编写强制填充UI元素的方法。为了获得复杂的行为,通常使用某种程度的组合。

    例如,如果在列表中有一系列需要的项目,其中一段文本后跟一个图像。在Windows窗体中,您将得到列表并对其进行迭代。对于列表中的每个项目,您将为项目和文本创建控件,并添加图片,然后将新的子控件添加到列表中。(具体程序可能因控制类型而异。您可以添加子项,而不只是创建一个控件等)。

    WPF将以非常不同的方式处理这一问题。在WPF的顶层,您将声明一个容器对象并将其绑定到列表。

    然后,您将为该容器提供一个用于显示其项的模板。模板基本上是另一个控件,它定义了子元素的位置,这些子元素与填充列表的类的实例绑定在一起。

    它以非常构图的感觉结束,并且是荒谬的强大。它也是一个与大多数开发人员所习惯的非常不同的模型,并且在您能够将模型内部化之前,尝试以Windows窗体/等中的方式进行操作时遇到问题是很常见的。

    但是,一旦您习惯了这个模型,回到其他API是很痛苦的。不是因为它们突然变硬了,而是因为你知道事情是多么容易。

        4
  •  9
  •   Community davidgyoung    7 年前

    你也许可以从我的问题历史中推断出,我肯定发现这是一条陡峭的学习曲线。你几乎准确地描述了我的经历。作为一名全职学生(数学和物理专业,而不是软件工程专业),他只为业余应用程序做WPF编程,这让人很沮丧。我尝试过在WPF中创建新的应用程序,或者将我的一些旧应用程序移植到WPF中,并且总是停留在一些看起来非常困难的小事情上。我没有做的一件事——基本上是因为时间问题——就是坐下来看一本书或一系列的教程,然后一步一步地学习。如果您是一个专业的开发人员,那么这可能更可行,并且可能使WPF对您来说更容易实现。

    我认为,给我带来麻烦的最大的事情是让我的头脑围绕着模型-视图-模型范式(参见 this question of mine )。而在WinForms中,我可以将一些东西拖放到一个窗体上,处理它的属性,并在代码隐藏中连接一些事件,现在我必须考虑将事物划分为视图、模型和视图模型。这些代码隐藏事件中有很多成为了验证规则或数据绑定的东西。我的应用程序中没有一个是真正的“数据操作”应用程序,这可能没有帮助;也就是说,它们不会操作客户信息数据库或其他任何东西,在这些数据库中,很多操作都是有意义的。相反,它更像是“我想要一个用户输入一个URI的文本框,并且我希望只有当该文本框包含一个有效的URI时,才会启用显示“下载”的按钮。”这样的小事情开始变得非常复杂;我必须考虑URI在我的模型中的位置,它在我的视图模型中的位置,连接一个验证框架。将按钮和文本框的工作和数据绑定属性绑定到所有这些元素。

    另一个恼人的问题是框架中遗漏了多少东西。例如, sorting listviews .

    不过,最终,WPF有很多优势。 The layout framework seems a lot nicer than the primarily pixel-based WinForms model. 它使用了现代字体,如segoe ui,heh:p。它的合成功能也非常棒,例如,在按钮上放置图像是多么自然(本质上,只需在按钮xaml标记内放置图像xaml标记);我怀疑它可以解决 my problem regarding checkboxes with controls inside of them 也一样,尽管我还没试过这么做。

        5
  •  9
  •   Peter Mortensen Sumit Kumar    15 年前

    我用.NET玩了4年多了,主要是 Windows Forms 应用。绑定并不是未知的,我尝试在所有的C应用程序中使用良好的实践。在过去的一个月里,我一直在为这份工作学习WPF,我不得不承认它非常强大,但很难实现。你可以做得更多,用更少的努力实现一些酷的设计,但只有当你知道它是如何真正工作的,这是困难的,因为它是巨大的。

    而且,调试更难——这也使得学习变得更慢。我认为问题在于Visual Studio的IDE对XAML没有太大帮助,您很快就会错过 IntelliSense 当进行绑定或其他现在在XML标记中的事情时。我喜欢它,但是的,学习曲线并不平滑。

        6
  •  6
  •   Peter Mortensen Sumit Kumar    15 年前

    可能很陡。

    我花了一个月的大部分时间来试验wpf,并在其中编写了一个我们当前产品的模型,而没有对它的数据绑定模型开发直觉,甚至没有弄清楚微软对它的使用意味着什么。我花了更少的时间掌握ASP.NET MVC的基础知识。

    [我们的应用程序显示/依赖于大量实时数据,我使用了弥敦的Windows演示文凭基金会。也许另一本书更合适。]

        7
  •  5
  •   Peter Mortensen Sumit Kumar    15 年前

    一旦你对WPF的工作原理有了大致的了解,它就很容易实现了——试试看。” WPF - how and why “。 最大的问题是,如果值得的话,可以解决这个问题,而且仍然有很多应用程序可以很好地实现为Windows窗体和一些图形。

    我也同意前面关于进入XAML的评论——它就像一个稍微复杂一点的HTML,唯一真正的困难是找出什么做了什么。至于在以后的项目中陷入困境,你不总是在以后的项目中陷入困境吗?当你开始尝试做1%的事情时,这是很困难的。

        8
  •  3
  •   Sergey Aldoukhov    15 年前

    是的,这不是一个简单的步行-但不要害怕。关于wpf的事情,它是精心设计的,所以当你学习它时,你会得到一个持续的积极的情绪反馈(至少我做了;)。你喜欢坐着玩,每隔几分钟就喊一声“哇哦”;)

        9
  •  3
  •   Peter Mortensen Sumit Kumar    15 年前

    这将是那些“视情况而定”的答案之一,但所有的答案 真的? 取决于你是否是那种不断提高技能的开发人员。如果是这样的话,那么归根结底要归结为两件事。

    WPF Unleashed (其他的书也有,但我极力推荐这本书),通过例子,在大约2个月的时间里,你会想,如果没有它,你是怎么做到的。

    这不是火箭科学,也没有需要处理的范式转换概念。事实上,如果您习惯于在逻辑和表示之间保持良好的分离,那么它应该正好适合您。

    要达到精通程度,你可能需要6到12个月的时间。

    祝你好运。

        10
  •  2
  •   Erich Mirabal    15 年前

    从与我一起工作的少数人那里,他们真的建议通过ExpressionBlend的所有教程。这给了他们一个很好的WPF背景和更好的工具时使用它。

        11
  •  2
  •   BBlake    15 年前

    如果您有HTML或XML或类似的基于语言的经验,这并不特别困难,特别是如果您有Web设计经验。如果你严格地来自Winforms的背景,学习曲线会更陡一些。我目前正在学习WPF,由于我来自广泛的Web开发背景,我发现对于大多数概念来说,这些概念都不难掌握。我发现windowsclient.net上的在线教程视频也非常有用,如果有点组织不好的话。