在为wpf应用程序定义自定义资源主题时,我可以设置宽度/高度等...如何找到这些属性的默认值(即框架中提供的控件中使用的值)?
WPF控件通常不包含任何类型的默认大小.WPF的主要功能之一是除非指定大小,否则所有内容都会动态调整大小.
如果你想测量控件在给定无限空间时想要拥有的空间量,你可以创建它,用尺寸为+无穷大,+无穷大调用Measure,然后检查DesiredSize.对于大多数控件,这将为您提供控件所需的最小尺寸.如果在Measure中给出一个固定的大小,一些控件将返回他们想要的所有空间,因为它们的大小是它们的容器(例如,Grid,TextBox,Button ...).有些控件的大小仅限于其内容,因此它们会告诉您他们不需要空间(例如,StackPanel).
因此,您必须问自己为什么在几乎所有控件都制作时,您甚至会想到WPF中默认大小的概念,以便根据它们的设置方式调整其内容或大小到容器.您要测量的主要内容是文本,您可以使用上面的技巧来处理TextBlock或图像等项目.
编辑:要查询任何DependencyProperty的默认值,请使用属性的元数据:
double defaultWidth = double.NaN;
PropertyMetadata widthMeta = TextBlock.WidthProperty.DefaultMetadata;
if (widthMeta != null && widthMeta.DefaultValue is double)
defaultWidth = widthDefault.DefaultValue;
Run Code Online (Sandbox Code Playgroud)
要将DependencyProperty重置为其默认值,请调用DependencyObject的ClearValue:
MyTextBlock.ClearValue(TextBlock.WidthProperty);
Run Code Online (Sandbox Code Playgroud)
要检查本地设置的值:
if (MyTextBlock.ReadLocalValue(TtextBlock.WidthProperty) != DependencyProperty.UnsetValue)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7258 次 |
| 最近记录: |