首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取WPF控件的当前大小

获取WPF控件的当前大小
EN

Stack Overflow用户
提问于 2011-10-26 21:29:52
回答 3查看 22.5K关注 0票数 12

我的窗口中有Image控件。此Image控件的大小设置为"Auto“。

代码语言:javascript
运行
复制
<Image x:Name="videoImg" Stretch="Fill" Height="Auto" Width="Auto" />

当我尝试访问时,它返回0。如何查看此控件的实际大小?它随window调整大小。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-26 21:32:11

可以使用.ActualHeight.ActualWidth获取控件的呈现Height/Width

票数 21
EN

Stack Overflow用户

发布于 2011-10-26 21:34:52

问题是,WidthHeight属性允许您表示所需的大小,而您需要的是呈现的大小-可以使用ActualWidthActualHeight属性访问(但不能设置)。

应该注意的是,这些也不是静态值,也就是说,一旦设置,它们不一定永远是相同的,因为它将在每个渲染序列中重新计算...

因为ActualHeight / ActualWidth是一个计算值,所以您应该知道,由于布局系统的各种操作,可能会有多个或增量报告的更改。布局系统可以计算子元素所需的测量空间、父元素的约束等。

因此,根据您的要求,您可能需要考虑在适当的点重新计算数据,例如,当包含的控件调整大小时。

票数 3
EN

Stack Overflow用户

发布于 2017-11-28 18:05:44

虽然一些WPF控件在布局和呈现时会填满所有可用空间,但其他控件不会。具体地说,Image控件不是那种自行确定其大小的控件,也就是说,当您没有使用width/height属性或类似属性显式指定控件的大小时。

但是当缺少定义大小的属性时,Grid控件会填满所有可用的空间。Visual Studio中的Page/Window模板有一个Grid控件作为Page/Window根控件的子控件,当用户开始在图形编辑器中的页面上放置控件时,用户添加的控件首先成为此Grid控件的子控件。

如果您使用了VS模板,并且image控件是上述Grid控件的子控件,请使用x:Name属性命名Grid,并且您可以在代码隐藏中使用Grid的ActualWidth/Height属性来满足您的需要,因为Image控件会增长到其父Grid大小--前提是您没有显式或以其他方式指定它的大小,即设置Image内容。

顺便说一句,可以更改内置控件的大小调整行为。您可以修改控件并重写相应的依赖属性。例如,请参见https://stackoverflow.com/a/6094993

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7903306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档