如何衡量/了解元素的重量?

时间:2010-03-10 07:12:33

标签: wpf xaml wpf-controls

我正在研究WPF项目的UI方面。我最喜欢的参考资料是XAML'ing,现在是Adam Nathan的“Windows Presentation Foundation Unleashed”。他提供了有关控件模板的以下提示:“不要在控件模板中使用ContentControl,而应使用重量较轻的ContentPresenter元素。”

与我合作的开发人员通常也会告诉我在我所做的所有XAML中使用最轻量级的元素 - 我完全理解。

如何找出不同元素的相对“权重”是什么?有明显的事情,例如RichTextBoxTextBox。但是,我怎么弄清楚,例如,StackPanel是否比任何一个都可以完成工作的网格更好?

元素/控件的可视化树是否是“重量”的良好指标?我还能看到什么?

1 个答案:

答案 0 :(得分:1)

当谈到ContentPresenter与ContentControl之类的东西时,你可以检查继承层次结构:ContentPresenter派生自FrameworkElement,而ContentControl派生自Control。

就面板而言,基本上Grid具有最复杂的布局逻辑(这就是为什么它是最灵活的),所以通常任何其他面板如果能完成工作会更好。如果你想要一个面板复杂性的具体指南,我会按照从最小到最复杂的顺序列出它们:

  1. UniformGrid - 子尺寸甚至不用于计算面板的范围
  2. StackPanel - 仅使用子尺寸的一个维度
  3. WrapPanel - 与StackPanel类似,但由于必须记住列/行的最宽元素,因此稍微复杂一些。
  4. DockPanel - 由于只有一个元素可以占用所有剩余空间,我认为它比网格重量轻。
  5. 网格 - 最灵活,因此具有最复杂的布局算法。