当前位置:   CAD > 正文

你在哪里画代码和XAMLin WPF之间的界限?

wpf,xaml,mvvm,c#,vb,程序员,go,hive,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我越了解WPF和XAML,我就越发现你可以在XAML或代码(比如C#代码或VB.Net代码)中完成所有的GUI初始化和事件处理.

我的问题是那些已经在WPF工作更长时间的人,理想情况下那些已经发布了应用程序的人 - 你在哪里找到了在XAML和代码之间"画线"的最佳位置?你有没有在任何地方使用XAML?只有在与非编码UI设计师接口的地方?

这方面的任何提示对我自己和刚刚进入WPF编程的其他程序员都非常有帮助,并且会因我们可以做出的所有选择而瘫痪!



1> cplotts..:

我要看的一件事是模型 - 视图 - 视图模型模式.这是一个非常优雅的模式,自然地将所有东西分成漂亮的桶......包括你的xaml.

例如,它可以帮助您在开发人员和设计人员之间保持清晰的界限,甚至允许进行测试驱动的开发.

其中有很多信息,但我会从John Gossman的博客文章开始:

http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx

http://blogs.msdn.com/johngossman/archive/2005/10/09/478894.aspx

http://blogs.msdn.com/johngossman/archive/2006/02/26/539598.aspx

http://blogs.msdn.com/johngossman/archive/2006/02/27/540304.aspx

http://blogs.msdn.com/johngossman/archive/2006/03/04/543695.aspx

http://blogs.msdn.com/johngossman/archive/2006/04/13/576163.aspx

更新: 只想将人们指向另一个StackOverflow 帖子,其中有很多关于MV-VM的好信息.



2> Kent Boogaar..:

一个提示是不在XAML中声明事件处理程序.相反,命名您的元素并在代码隐藏中附加事件处理程序.这有助于在设计人员和开发人员之间保持清晰的分离.



3> Scott Whitlo..:

正如其他人所建议的那样,请尝试遵循Model-View-ViewModel模式.但是,把东西放在代码隐藏中是可以的!规则是,如果它与"视图"相关,则将其放在Xaml或代码隐藏中(以更方便的方式).如果与用户如何与系统交互相关的业务逻辑更多,则它属于ViewModel.如果它只是与交互无关的业务逻辑,则它属于模型.

每个的例子是:

Model:定义一个名为ModifiedDate的属性,用于存储上次修改时间.

ViewModel:将ModifiedDate转换为名为ModifiedAge的枚举属性,具体取决于修改时间:昨天,上周,上个月,去年等.

视图:将ModifiedAge属性转换为背景颜色,其中最近访问的数据突出显示为亮黄色,而最近访问较少的数据更像是设计师所坚持的米色 - 卡其色灰色,称为"Meadow Lark Lilly Flowerpot".


很好的例子说明了"适合"的地方.而且,我也喜欢不要过于"严格"避免代码背后的建议......避免代码背后不是目标......将东西放入正确的桶中!

4> Kent Boogaar..:

另一个提示是将XAML分为功能和美学.开发人员通常使用功能性XAML,而设计人员主要关注美学.这使得功能XAML非常容易理解,这很重要,因为开发人员经常需要编辑这样的XAML.美学XAML通常由设计师使用工具编辑,因此其整洁和冗长不是问题.

我刚才在这里做了一篇博文.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/CAD/detail/23885
推荐阅读
  • 如何解决《指导您的异常处理政策的原则是什么?》经验,为你挑选了3个好方法。error-handling,exception-handling,exception,程序员,c#,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工... [详细]

  • 如何解决《'foo'到底意味着什么?》经验,为你挑选了6个好方法。language-agnostic,coding-style,python,程序员,xml,html,DevBox,在线流程图,编程,编程问答,程序员,开发者... [详细]

  • 如何解决《STL替代方案》经验,为你挑选了4个好方法。c++,performance,stl,debug-build,容器,程序员,html,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,... [详细]

  • 如何解决《有没有一个像样的开源游戏机》经验,为你挑选了2个好方法。open-source,程序员,android,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开... [详细]

  • 如何解决《我为什么不用"匈牙利表示法"?》经验,为你挑选了15个好方法。language-agnostic,naming-conventions,hungarian-notation,安全,vb,html,python,... [详细]

  • 如何解决《向程序员解释嵌套数组》经验,为你挑选了2个好方法。language-agnostic,arrays,multidimensional-array,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,js... [详细]

  • 如何解决《C#/.NET,看什么?》经验,为你挑选了2个好方法。c#,程序员,linux,windows,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开... [详细]

  • 如何解决《你创建自己的代码生成器吗?》经验,为你挑选了5个好方法。code-generation,程序员,算法,xml,html,sql,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,un... [详细]

  • 如何解决《初学者寻找美丽的教学Python代码》经验,为你挑选了3个好方法。python,算法,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发... [详细]

  • 如何解决《DVD菜单编码》经验,为你挑选了0个好方法。dvd,menu,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长... [详细]

  • 如何解决《格式化if语句》经验,为你挑选了10个好方法。c,if-statement,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发... [详细]

  • 如何解决《理论计算机科学什么时候有用?》经验,为你挑选了8个好方法。theory,turing-machines,computation,halting-problem,算法,安全,c#,程序员,vb,DevBox,在线流程图,编程,编程问... [详细]

  • 这篇文章主要介绍了javascript中slice(),splice(),split(),substring(),substr()使用方法,需要的朋友可以参考下slice(),splice(),split(),substring(),sub... [详细]

  • 如何解决《C++中的int和long有什么区别?》经验,为你挑选了8个好方法。c++,variables,windows,linux,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,... [详细]

  • 如何解决《对可怕的While(True)循环进行最佳重构》经验,为你挑选了8个好方法。refactoring,loops,while-loop,windows,go,算法,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具... [详细]

  • 如何解决《什么是sqlite的优秀OOC++包装器》经验,为你挑选了7个好方法。c++,database,sqlite,sql,mysql,程序员,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,... [详细]

  • 如何解决《你如何继续提高你的SQL技能?》经验,为你挑选了1个好方法。sql-server,sql,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端... [详细]

  • 如何解决《使用CSS内容添加HTML实体》经验,为你挑选了7个好方法。html,css,html-entities,css-content,程序员,php,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析... [详细]

  • 如何解决《是否有Java的析构函数?》经验,为你挑选了11个好方法。java,garbage-collection,destructor,程序员,https,html,安全,windows,DevBox,在线流程图,编程,编程问答,程序员,... [详细]

  • 如何解决《为什么Splint(C代码检查器)在将float与int进行比较时会出错?》经验,为你挑选了1个好方法。c,lint,splint,程序员,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维... [详细]

相关标签
  

闽ICP备14008679号