为 wpf 应用程序定义自定义资源主题时,我可以设置宽度/高度等...如何找到这些属性的默认值(即框架中提供的控件中使用的值)?
WPF 控件通常不包含任何类型的默认大小。 WPF 的主要功能点之一是,除非您指定大小,否则所有内容都会动态调整大小。
如果您确实想要测量控件在给定无限空间的情况下希望拥有的空间量,您可以创建它,使用 +infinity、+infinity 的大小对其调用 Measure,然后检查 DesiredSize。对于大多数控件,这将为您提供控件所需的最小尺寸。如果您在“测量”中给出固定大小,则某些控件将返回它们在调整其容器大小时需要的所有空间(例如,网格、文本框、按钮...)。有些控件的大小仅适合其内容,因此它们会告诉您它们不需要空间(例如 StackPanel)。
因此,您必须问自己,为什么您会在 WPF 中考虑默认大小的概念,因为几乎所有控件的设计都是根据其内容调整大小或根据其容器调整大小,具体取决于它们的设置方式。您想要测量的主要内容是文本,您可以使用上面的技巧来测量 TextBlock 或图像等项目。
Edit:要查询任何 DependencyProperty 的默认值,请使用该属性的元数据:
double defaultWidth = double.NaN;
PropertyMetadata widthMeta = TextBlock.WidthProperty.DefaultMetadata;
if (widthMeta != null && widthMeta.DefaultValue is double)
defaultWidth = widthDefault.DefaultValue;
要将 DependencyProperty 重置为其默认值,请调用 DependencyObject 的 ClearValue:
MyTextBlock.ClearValue(TextBlock.WidthProperty);
要检查本地设置值:
if (MyTextBlock.ReadLocalValue(TtextBlock.WidthProperty) != DependencyProperty.UnsetValue)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)