【发布时间】:2011-09-28 13:20:45
【问题描述】:
在 Windows Phone 中,从性能的角度来看,在 XAML 中定义控件还是在运行时动态创建它们更好? XAML 和运行时控件的优缺点是什么?
【问题讨论】:
标签: c# silverlight performance xaml windows-phone-7
在 Windows Phone 中,从性能的角度来看,在 XAML 中定义控件还是在运行时动态创建它们更好? XAML 和运行时控件的优缺点是什么?
【问题讨论】:
标签: c# silverlight performance xaml windows-phone-7
我记得读过 Xaml 加载比代码中的等效创建更有效,但是:
影响速度的因素包括命名元素的数量(因为它们通过在设计器文件中的查找连接到代码隐藏成员)以及相似/总元素的数量。
从业务角度来看,将其保存在 Xaml 中是一种更容易维护项目的方法。 Xaml 的全部目的是让设计人员能够独立于编码人员处理外观。
【讨论】:
我认为我说的对,性能明智没关系。
从开发人员的角度来看,在 XAML 中定义的控件可以实现清晰的分离,如果您使用 MVVM,您将获得模式带来的所有好处(单元测试、清晰的分离、更好的可管理性等)
此外,如果您在 XAML 中定义了控件,您的应用将更适合 Blend 开发,并允许您直观地控制应用的外观。
我更喜欢将所有 UI 控件保留在 XAML 中,并在代码中完成具体细节。但该框架旨在满足所有开发人员的口味
【讨论】:
我认为,如果您尝试使用纯代码来定义动画/VisualStates,您会意识到 Blend 可以有多棒。
Binding 语法在代码中也感觉不太可读,但是,这可能是个人喜好问题。
【讨论】:
性能差异可以忽略不计,甚至不应该是一个因素,因为维护和代码质量差异如此之大。代码生成的控件难以维护,难以设计和样式化,并且使开发人员更难遵循应用程序流程。您基本上是在询问使用可以提供设计时视图、将表示逻辑与业务逻辑分开并允许 Blend 等工具接管的 XAML 与否定上述所有内容的编程方法之间的区别。如果您决定将您的应用程序移植到 Windows 8 并使用 WinRT 引擎,该怎么办?使用 XAML 方法和 MVVM 之类的模式,您可能会重用大部分代码并简单地更新一些视图,而使用编程方法,所有这些代码都必须被丢弃以支持新的运行时。因此,即使一个与另一个之间存在细微的性能差异,我建议这并不重要,因为其他因素要考虑的重要得多。
【讨论】: