Rhy*_*hys 35
WPF不同; 没有远离那个.
我的主要建议是不要害怕XAML; 拥抱它,这就是权力所在!
让我解释:-
为了让我高效,我更喜欢在文本视图中编写XAML,因为我可以通过几次击键创建窗口的裸布局.如果您经常键入代码,那么这是一种非常快速的开发窗口的方法.然后,您可以使用Visual编辑器使其看起来很漂亮.
如果您记住XAML的每个元素都将" new"该对象,并且该XAML元素的每个属性都是该对象的属性,您可以将XAML视为对象创建和属性赋值.与编写代码非常相似.
如果你在视觉设计师身上花费太多时间,那么你就不会理解这一点,对于一些人来说,这会减慢学习曲线.
最近的Hanselminutes播客可能会让您感兴趣.
我还强烈建议尽早学习视图和视图模型的概念,即使你没有订阅所有属于CompositeWPF的部分,因为这确实有帮助.
Arc*_*rus 17
Karsten Januszewski写了一篇很好的文章,名为Hitting the Curve:在WPF和Productivity上你可能会觉得很有趣:
让我们明确一点:WPF带有一条曲线.我现在看到一群开发人员达到了这个曲线.曲线很陡.根据开发人员和开发人员的经验/直觉水平,我们谈论两周到两个月的曲线.会有一些完全神秘化的时刻和充足的时刻.如果开发人员喜欢发现深度和深思熟虑的UI平台,那么它既痛苦又愉快.它既熟悉又陌生.与其他UI开发范例有许多相似之处:样式感觉像CSS,等等.背后的XAML代码感觉就像ASP.NET一样.3D感觉就像DX或OpenGL一样.路由事件感觉就像.NET事件一样.依赖属性感觉就像属性一样.这份名单可以继续使用.但是,这些(某种)熟悉的隐喻中有许多必须掌握的外来概念:控制模板,故事板,数据绑定立即浮现在脑海中.这不是一个微不足道的曲线,并且不希望在第1天甚至第1周甚至第1个月都有效.
这一切都值得!;)
kyo*_*ryu 11
学习WPF的难度不在于API和模型.这是一个非常不同的心理模型,而不是像Windows Forms这样的东西.
您通常将数据绑定到对象上的属性,而不是编写强制填充UI元素的方法.要获得复杂的行为,通常使用某种程度的组合.
例如,如果列表中包含一系列项目,则使用一段文本后跟图像.在Windows窗体中,您将获得列表并对其进行迭代.对于列表中的每个项目,您将为项目和文本创建控件,然后添加图片,然后将新的子控件添加到列表中.(确切的过程可能会根据控件的类型而有所不同.您可以添加SubItems而不是仅仅创建一个控件等).
WPF会以不同的方式处理这个问题.在WPF中,在顶层,您将声明一个容器对象并将其绑定到列表.
然后,您将为该容器提供一个模板,用于显示其项目.模板基本上是另一个控件,它定义了子元素的位置,这些子元素与列表填充的类的实例绑定在一起.
它最终具有非常有成分感,并且非常强大.它也是一个与大多数开发人员习惯的模型非常不同的模型,并且在您可以内化模型之前,尝试按照Windows Forms /等方式执行操作会遇到问题.
但是,一旦习惯了模型,回到其他API是很痛苦的.不是因为他们突然变得艰难,而是因为你知道事情是多么容易.
我已经使用.NET超过4年了,主要是Windows Forms应用程序.绑定不是未知的东西,我尝试在所有C#应用程序中使用良好的实践.在过去的一个月里,我一直在学习WPF,我不得不承认它非常强大,但实现起来要困难得多.你可以做更多的事情,用更少的努力实现一些很酷的设计,但只有一旦你知道它是如何工作的,它很难,因为它是巨大的.
更多,调试更难 - 这也使得学习更加缓慢.我认为问题是Visual Studio的IDE在XAML中没有多大帮助,当你做绑定或其他现在在XML标签中的东西时,你很快就会错过C#的IntelliSense的一些功能.我喜欢它,但是,学习曲线并不顺畅.
正如您可能从我的问题历史中推断出来的那样,我肯定发现它是一个陡峭的学习曲线.你几乎完全描述我的经历.作为一名全职学生(数学和物理,而不是软件工程),他只为业余爱好者应用程序进行WPF编程,但却相当令人沮丧.我已经尝试在WPF中创建新的应用程序,或者将我的一些旧应用程序移植到WPF上,并且总是陷入一些似乎非常困难的小事.有一件事我没做过 - 基本上是因为时间关注 - 坐下来,例如一本书或一系列的教程,并逐步完成它们.如果您是一名专业开发人员,那可能会更加可行,并且可能会使WPF变得更加容易.
我认为,给我带来麻烦的最重要的事情就是围绕Model-View-ViewModel范例(参见我的这个问题).在WinForms中我可以将一些东西拖放到一个表单上,混乱其属性,并在代码隐藏中挂钩一些事件,现在我必须考虑将事物分区为视图,模型和视图模型.很多这些代码隐藏事件都成为验证规则或数据绑定的东西.我的应用程序都不是真正的"数据操作"应用程序,这可能无济于事; 也就是说,他们不会操纵客户信息或任何东西的数据库,其中很多都是有意义的.相反,它更像是"我想要一个用户输入URI的文本框,我希望只有在该文本框包含有效URI的情况下才能启用"下载"按钮." 这样的小事开始变得非常复杂; 我必须考虑URI在我的模型中的位置,它适合我的viewmodel,连接验证框架,以及按钮和文本框的数据绑定属性到所有这些元素.
另一个令人讨厌的问题是框架中缺少多少东西.例如,排序listviews.
但最终,WPF有很多优点.布局框架似乎比主要基于像素的WinForms模型好很多.它使用像Segoe UI这样的现代字体,呵呵:P.它的合成功能也非常棒,例如将图像放在按钮上是多么自然(只是将图像XAML标签放在按钮XAML标签内,基本上); 我怀疑它可以解决我关于带有控件的复选框的问题,虽然我还没有尝试过这样做.
它可能非常陡峭.
我花了一个多月的时间来试验WPF并在其中编写我们当前产品的模型,而没有为其数据绑定模型开发直觉,甚至弄清楚微软如何使用它.掌握ASP.NET MVC的基础知识花了我很少的时间.
[我们的应用程序显示/取决于大量实时数据,我使用了Nathan的Windows Presentation Foundation一书.也许另一本书更合适.]
小智 5
一旦你了解它的工作原理,WPF很容易 - 尝试" WPF - 如何以及为什么 ".最大的问题是如果它值得一试,那么仍有很多应用程序可以很好地实现为Windows Forms和一些图形.
我也同意早先关于进入XAML的评论 - 它就像一个稍微复杂的HTML,唯一真正的困难是找出什么做了什么.至于以后在项目中遇到困难 - 你是否总是在以后的项目中遇到困难?当你开始尝试做1%的艰难时.
| 归档时间: |
|
| 查看次数: |
13967 次 |
| 最近记录: |