Wpf 一个人如何测量/知道一个元素的重量?

Wpf 一个人如何测量/知道一个元素的重量?,wpf,xaml,wpf-controls,Wpf,Xaml,Wpf Controls,我在WPF项目的UI端工作。我最喜欢的参考,而XAMLING目前是Adam Nathan的“Windows演示基金会释放”。他给出了以下关于控件模板的提示:“与其在控件模板中使用ContentControl,不如使用更轻的ContentPresenter元素” 与我一起工作的开发人员通常也会告诉我在我所做的所有XAML中尽可能使用最轻量级的元素——我完全理解这一点 如何找出不同元素的相对“权重”是多少?有一些显而易见的东西,比如RichTextBox与TextBox的对比。但是,例如,在任何一种

我在WPF项目的UI端工作。我最喜欢的参考,而XAMLING目前是Adam Nathan的“Windows演示基金会释放”。他给出了以下关于控件模板的提示:“与其在控件模板中使用
ContentControl
,不如使用更轻的
ContentPresenter
元素”

与我一起工作的开发人员通常也会告诉我在我所做的所有XAML中尽可能使用最轻量级的元素——我完全理解这一点

如何找出不同元素的相对“权重”是多少?有一些显而易见的东西,比如
RichTextBox
TextBox
的对比。但是,例如,在任何一种情况下,我如何判断
StackPanel
是否比网格更好


元素/控件的可视树是否是“权重”的良好指示器?我还可以看什么?

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

就面板而言,基本上网格具有最复杂的布局逻辑(这就是为什么它是最灵活的),所以通常任何其他面板都会更好,如果它能够完成任务的话。如果您想了解面板复杂性的具体指南,我将按以下顺序列出它们,从最简单到最复杂:

  • UniformGrid-子大小甚至不用于计算面板的范围
  • StackPanel-仅使用孩子尺寸的一个维度
  • WrapPanel-类似于StackPanel,但更复杂一点,因为必须记住列/行中最宽的元素
  • DockPanel-由于只有一个元素可以占用所有剩余空间,我认为它比网格更轻
  • 网格最灵活,因此具有最复杂的布局算法

  • 你好,阿贝,谢谢。根据您的回答:“……您可以检查继承层次结构:ContentPresenter派生自FrameworkElement,而ContentControl派生自Control。”因此,派生自Control的内容总是比派生自FrameworkElement.Panel的内容“重”,因为控件具有包含大量功能的控件模板?和:“网格-最灵活,因此具有最复杂的布局算法。”即,灵活性通常也是权重的良好指示。(我在这里大声思考,如果我错了,请纠正我!)是的,我同意你所有的澄清。我想说的是,控件被模板化确实是使它们更重的原因。由于您可以将控件的视觉树重新定义为全局样式,因此作为控件作者,您将不知道要添加多少视觉效果。。。