`
taowen
  • 浏览: 196124 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

the paint points of xaml

阅读更多
Pain Point 1: XAML always create the controls by its default constructor

This means, you need to have a default constructor for you control, and the constructor will always be used by XAML. So, you can not use constructor dependency injection to pass things like services, gateways to your control. Also, you will not have chance to pass data in constructor, although the data might be must-have for the specific type of control

Paint Point 2: can not control XAML to create or not to create some part of GUI

Sometimes, the GUI is not static. It could be dynamic because the GUI would be different for the data it is presenting, such as for a meeting in the past it should show a adding note button, for a meeting in the future it should not. And more often, the security control requires the GUI to be different according to the role.

Paint Point 3: XAML is using XML, which contains too many visual noise

compared to things like YAML, XML is definitely not very friendly to our eyes. The things worse than XML I can come up is the braces of Lisp. Also, XML makes it harder to edit manually

Paint Point 4: Layouting in Grid

Using grid layout currently requires you to specify the row and column for all the children of a grid. It is very error-prone when the grid becomes large. But grid is a must-have for any non-trivial GUI, and there is not replacement for it yet.

Paint Point 5: Things not checked in compiling time

There are lots of things not checked by the compiler in XAML. Things like binding, resource looking up for example. And it is harder to cross reference between xaml and code.

Paint Point 6: More files

one file for xaml one file for cs. It requires more steps to create a new user control and is confusing to new comers.

Paint Point 7: Separating concerns

the default way events get handled is in the partial class of the XAML. It is not a good way of separating concerns and not good oo design. the windows and user controls usually doing too much in rich client application. It is not the fault of XAML in general, but it is not promoting a good model either by its weird way of hooking up event in xaml.

Paint Point 8: Hard to test

It is hard to test in many ways. First, not easy to inject dependency means you can not mock those expensive things like network connection. Second, creating a real window is taking more than ten seconds. Third, many things are in a static singleton model like resource looking up and the single instance application object.
分享到:
评论

相关推荐

    设计多边形窗体(C#源代码编写)

    在这个XAML代码中,我们定义了一个`Polygon`元素,设置了`Points`属性来指定顶点坐标,`Stroke`和`StrokeThickness`控制边框的颜色和宽度,`Fill`则决定了填充色。 如果你下载了名为"C#081205-设计多边形窗体"的...

    C#绘制多边形

    这些控件可以直接在XAML中定义,或者在代码中动态创建和操作。 通过以上步骤,你可以使用C#轻松地在Windows Forms或WPF应用程序中绘制多边形。无论是简单的几何形状还是复杂的自定义图形,GDI+和WPF都提供了强大的...

    c# 简单的绘图程序

    在WPF中,绘图则基于XAML和`System.Windows.Shapes`命名空间,如`Line`, `Path`等元素,以及`Storyboard`和`Geometry`类来实现动画和复杂图形。不过,根据项目名称,我们更可能是在讨论Windows Forms的绘图。 在"**...

    cmd-bat-批处理-脚本-IE主页修改.zip

    cmd-bat-批处理-脚本-IE主页修改.zip

    Delphi 12.3控件之uniGUI-Extras-1.95.0.1600.rar

    Delphi 12.3控件之uniGUI-Extras_1.95.0.1600.rar

    【数据库安全】MySQL中SQL注入攻击原理与防御措施:提升Web应用安全性设计在MySQL环境下SQL

    内容概要:本文主要介绍了SQL注入的概念、危害及其防范措施。SQL注入是攻击者通过恶意构造输入,使服务器执行非预期的SQL命令的一种攻击方式,常因用户输入未

    ORON1.SHX

    使用方法:拷贝到Auto CAD的Fonts下

    cmd-bat-批处理-脚本-维护版.zip

    cmd-bat-批处理-脚本-维护版.zip

    esp-idf-extension.vsix zip

    解压

    【数据库管理】MySQL命令大全:涵盖数据库与数据表操作及事务管理的常用指令集

    内容概要:本文档为《mysql.docx》,主要汇总了MySQL的各类常用命令,分为基础命令、数据库相关命令、数据表相关命令和事务相关命令四大部分。基础命令涵盖了连接、创建、删除数据库,创建和删除表,插入、查询、更新、删除数据等基本操作;数据库相关命令则进一步细化了对数据库的管理操作,如修改编码格式、查看数据库详细信息等;数据表相关命令着重介绍了对表结构和数据的操作,包括创建、修改、删除表,添加、删除、修改列,创建和删除索引等;事务相关命令主要涉及事务的开始、提交、回滚,设置事务隔离级别,以及表的锁定与解锁操作。; 适合人群:适用于具有一定SQL基础,尤其是MySQL使用经验的数据库管理员或开发人员。; 使用场景及目标:①帮助用户快速查找并正确使用MySQL的各种命令;②提高用户对MySQL数据库的操作能力,包括但不限于数据库和表的创建、修改、删除,数据的增删改查等;③掌握MySQL事务处理机制,确保数据的一致性和完整性。; 其他说明:本文档是MySQL命令的集合,建议用户在实际操作前先熟悉各个命令的具体用法,并在测试环境中进行练习,避免误操作导致数据丢失或其他严重后果。

    cmd-bat-批处理-脚本-交换两个变量的值而不使用临时变量.zip

    cmd-bat-批处理-脚本-交换两个变量的值而不使用临时变量.zip

    软件工程集成测试全流程解析:确保软件模块协同工作的关键方法与实践

    内容概要:集成测试是确保软件质量的关键环节,它在单元测试基础上验证模块间的交互和协作。文章详细介绍了集成测试的目的、重要性、流程步骤、策略与方法以及常见问题的解决办法。集成测试不仅验证模块接口的正确性,还确保系统的整体功能和性能符合预期。文章通过一个电商系统的实际案例,展示了集成测试在发现和解决问题中的具体应用。最后,展望了集成测试未来的发展趋势,如自动化测试、云计算、大数据和人工智能技术的应用。 适合人群:软件开发人员、测试工程师、项目经理及相关技术人员。 使用场景及目标:①了解集成测试在整个软件开发生命周期中的作用和重要性;②掌握集成测试的详细流程,包括测试计划制定、环境搭建、用例设计、执行与记录、缺陷管理和回归测试、测试总结与报告;③学习集成测试的不同策略(自顶向下、自底向上、混合策略)和方法(黑盒测试、白盒测试、模拟测试),并理解其适用场景;④掌握常见问题(接口不匹配、数据传递错误、性能瓶颈)的解决办法。 其他说明:本文不仅提供了集成测试的理论知识,还结合实际案例进行详细讲解,帮助读者更好地理解和应用集成测试技术。未来集成测试将受益于自动化测试、云计算、大数据和人工智能技术的发展,测试人员应不断学习新技术,优化测试流程,提高软件质量和效率。

    cmd脚本-bat批处理-快速设定分辨率.zip

    cmd脚本-bat批处理-快速设定分辨率.zip

    高阶过采样delta-sigma DAC设计.pdf### 高阶过采样 delta-sigma DAC设计

    内容概要:本文献为电子科技大学硕士学位论文,题目为“高阶过采样delta-sigma DAC设计”。论文首先介绍了DAC的基本概念及其多种结构,重点阐述了delta-sigma DAC的优势,包括实现24位以上量化精度、简化模拟部分设计等。接着详细探讨了delta-sigma DAC的核心组成部分——过采样和噪声整形。过采样部分采用8倍插值8倍采样保持结构,其中插值器由2倍和4倍插值器级联构成;噪声整形部分采用5阶结构,优化了零点和极点,形成前馈加局部振荡反馈的噪声整形环。论文还介绍了在Matlab中完成的数字模型和FPGA平台上实现的硬件设计,最终实现了16位数据位宽、信噪比为95.53dB的delta-sigma DAC。 适合人群:具备一定电子工程和数字信号处理基础,特别是对DAC设计感兴趣的研究生或研究人员。 使用场景及目标:①适用于研究高精度数模转换技术的学术机构;②为设计高阶过采样delta-sigma DAC提供理论和技术支持;③探索delta-sigma技术在音频和其他高精度应用领域的潜力。 阅读建议:此资源不仅涉及复杂的理论分析,还包括详细的硬件实现步骤,建议读者在理解基本概念的基础上逐步深入,结合Matlab仿真和FPGA实现进行实践,以加深对delta-sigma DAC设计的理解。

    cmd-bat-批处理-脚本-弹出对话框.zip

    cmd-bat-批处理-脚本-弹出对话框.zip

    基于MATLAB实现的ARIMA模型代码示例

    提供一个ARIMA模型的MATLAB代码示例,该代码能够根据用户自身的具体需求灵活调整参数,从而达到预期的分析效果。

    cmd-bat-批处理-脚本-倒记时(全屏).zip

    cmd-bat-批处理-脚本-倒记时(全屏).zip

    ssm+vue图书管理系统全套源码+毕业论文+数据库sql

    ssm+vue图书管理系统全套源码+毕业论文+数据库sql,全套毕设,非常具有参考意义

    cmd-bat-批处理-脚本-更改电源管理方式.zip

    cmd-bat-批处理-脚本-更改电源管理方式.zip

    cmd-bat-批处理-脚本-禁止用XP的图片视频预览功能.zip

    cmd-bat-批处理-脚本-禁止用XP的图片视频预览功能.zip

Global site tag (gtag.js) - Google Analytics