我的窗口中有Image控件。此Image控件的大小设置为"Auto“。
<Image x:Name="videoImg" Stretch="Fill" Height="Auto" Width="Auto" />当我尝试访问时,它返回0。如何查看此控件的实际大小?它随window调整大小。
发布于 2011-10-26 21:32:11
可以使用.ActualHeight和.ActualWidth获取控件的呈现Height/Width
发布于 2011-10-26 21:34:52
问题是,Width和Height属性允许您表示所需的大小,而您需要的是呈现的大小-可以使用ActualWidth和ActualHeight属性访问(但不能设置)。
应该注意的是,这些也不是静态值,也就是说,一旦设置,它们不一定永远是相同的,因为它将在每个渲染序列中重新计算...
因为ActualHeight / ActualWidth是一个计算值,所以您应该知道,由于布局系统的各种操作,可能会有多个或增量报告的更改。布局系统可以计算子元素所需的测量空间、父元素的约束等。
因此,根据您的要求,您可能需要考虑在适当的点重新计算数据,例如,当包含的控件调整大小时。
发布于 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。
https://stackoverflow.com/questions/7903306
复制相似问题