为wpf应用程序定义自定义资源主题时,我可以设置宽度/高度等......我如何找到这些属性的默认值(即在框架中提供的控件中使用的值) ?WPF控件默认大小
3
A
回答
3
FrameworkElements的默认宽度和高度为Double.NaN
。如果您没有指定不同的大小,那么WPF控件会自动调整大小以尝试适合其内容,容器或两者。
6
WPF控件通常不包含任何种类的默认大小。 WPF的一个主要功能点是除非您指定大小,否则所有内容都会动态调整大小。
如果您确实想测量控件在给定无限空间时想要拥有的空间量,则可以创建它,使用大小为+ infinity,+ infinity的方式调用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;
要重置的DependencyProperty为它的默认值,调用的DependencyObject的ClearValue:
MyTextBlock.ClearValue(TextBlock.WidthProperty);
要检查本地设定值:
if (MyTextBlock.ReadLocalValue(TtextBlock.WidthProperty) != DependencyProperty.UnsetValue)
相关问题
- 1. 默认大小
- 2. 默认大小
- 3. WPF绑定控件大小
- 4. SystemIcons默认大小
- 5. 自定义WPF控件的默认值
- 6. 小容器大小的WPF控件
- 7. 如何更改自定义控件的默认大小
- 8. 更改Netbeans中Swing控件的默认字体大小
- 9. 将控件的大小重置为其默认值
- 10. .NET Compact Framework:将默认大小定义为自定义控件
- 11. TinyMCE默认字体大小
- 12. ERLANG - 默认浮点大小
- 13. 增加默认大小
- 14. Blocking collection的默认大小
- 15. Google图表默认大小
- 16. Vimeo默认视频大小
- 17. 默认UITableViewCellStyleSubtitle字体大小?
- 18. iterm2默认窗口大小
- 19. 上传期间文件大小超过默认大小
- 20. 自动调整大小WPF控件
- 21. WPF:自动控件大小调整
- 22. 获取WPF控件的当前大小
- 23. WPF无法调整控件的大小
- 24. WPF - 图像控件实际大小
- 25. Wpf控件的大小在wpf中变得很小/模糊Viewbox
- 26. Wpf控制大小内容?
- 27. 如何在WPF中设置新窗口的默认大小?
- 28. WPF运行对象的默认字体大小?
- 29. 热点默认最大堆大小
- 30. 调整WPF控件大小以适应窗口大小
好的我同意你的答案。然而那不是我真正想要的。我最近有一个问题与我的主题,因为DatePicker包含按钮。如果我改变了ressourceDictionary中按钮控件的宽度,它也会影响我的派生控件。 – fabien
所以你实际上在寻找一种方法来知道宽度是否已经从原始值改变了? –
是的,否则我们可能会遇到意外的结果 – fabien