wpf - 如何加快WPF开发速度

标签 wpf xaml

我使用 WPF 进行开发已经有好几个月了。这是一个很棒的框架,我能够做一些奇特、优雅的事情,而使用 WinForms 会困难得多。

但是,我确实有这样的感觉:对于没有任何特殊 UI 要求的普通“业务线”类型的应用程序,在 XAML 中编写 UI 代码仍然比在 WinForms 中拖放 UI 需要更长的时间.

例如,在 WinForms 中,我只需在表单上放置一个附加标签和一个附加文本框,然后安排所有内容(使用辅助线),直到看起来不错为止。在 WPF 中,我首先将现有标签和文本框的属性分解为样式,以便我可以重用它们;考虑最合适的布局元素,也许将一些停靠面板/堆栈面板重构为网格(或反之亦然);尝试不同的边距值等。虽然我在 WPF 方面有很多经验,但仍然需要很长时间。

我知道我可以忘记“干净的 XAML”并使用 Visual Studio 2008 中的 GUI 设计器(它将所有内容绝对定位在一个巨大的网格内),但我担心我会失去 XAML 的许多优势通过这样做来提供。

你有过类似的经历吗?如果是,您做了什么来加速日常 WPF 开发?

最佳答案

我为加快日常 WPF 开发所做的事情:

  1. 尽可能忽略外观和感觉。理想情况下,调整对齐方式和边距以及定义样式是我做的最后一件事。

  2. 在使用 Grid 之前使用 DockPanel,在使用 StackPanel 之前使用 Grid。

  3. 使用网格时,将所有内容设为星号。我稍后会回来解决这个问题,但在原型(prototype)设计过程中,清楚地了解网格实际有多少行和列是非常有帮助的。

  4. 在 Kaxaml 中制作原型(prototype),在 Expression Blend 中完成,在 Visual Studio 中进行测试。找出一种方法已经花费了很多时间,而且它仍然是一项正在进行的工作。但是 Kaxaml 非常适合快速了解 XAML 原型(prototype)的行为方式,而 Blend 非常适合制定视觉效果并将内容封装到用户控件和样式中。

  5. 使用 Blend 时,不要在画板中创建布局,而是在对象轮廓中创建布局。当我第一次开发 WPF UI 时,对象的层次结构比它在屏幕上的外观重要一百倍。我仍在学习如何做到这一点,而且一旦我足够擅长,我似乎就不再需要在 Kaxaml 中进行原型(prototype)设计了。

  6. 做尽可能小的事情。这需要大量的纪律。我有一个不错的大型复杂 XAML 文件,我决定需要编辑控件的模板。要做的第一件事是创建一个包含该控件的小型 XAML 文件,然后在其中编辑控件模板。 原位这样工作的诱惑很大,因为只需右键单击即可编辑控件模板。不要这样做。

  7. 甚至不用考虑我是否应该为我的小型一次性应用程序开发一个 View 模型。是的,我应该这样做。

  8. 学习混合。真的真的要好好学习一下了解所选对象周围的所有小图标的含义,并注意它们。 (这里有一个捷径:我没有在那件事上设置边距,但 Blend 做到了。这可能是我 30% 的“Blend 现在到底在做什么?”问题的答案。)即使我 知道手动编辑 XAML 会更快。这又是一个纪律问题,抵制现在就完成它的诱惑,这样我就可以提高我以后完成更多工作的能力。

关于wpf - 如何加快WPF开发速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3086400/

相关文章:

c# - 如何使用 MVVM 模式绑定(bind) Datagrid?

wpf - 当前上下文 : strange behaviour 中不存在名称 'InitializeComponent'

wpf - System.BadImageFormatException 与 Sqlite

xaml - 如何让 ListBox ItemTemplate 水平拉伸(stretch) ListBox 的整个宽度?

c# - 如何在 Xaml 中的文本中包含电子邮件链接?

wpf - 如何立即更新 WPF 绑定(bind)

c# - 从*新* ComboBox 文本更新,而不是旧文本

c# - 使用字符串或数组从 C# 访问 XAML 元素

xaml - 使用 Visual State Manager 优于在代码中处理 Current_SizeChanged 事件的优势(WinRT、XAML)

c# - App.xaml 尝试在 Windows Phone 8 项目中使用 MVVM Light 时出错