【发布时间】:2016-06-15 14:45:35
【问题描述】:
我需要获取 Viewbox 的动态高度和宽度 我的 xaml 的层次结构是这样的:
<Grid>
<DockPanel>
<Border>
<ViewBox/>
</border>
</DockPanel>
</Grid>
Viewbox Width 设置为“Auto”,Height 绑定到我的 Controller 中的一个变量。 类层次结构是这样的: Xaml 控制器 (xaml.cs 大多被忽略)
现在我的问题是,即使在直接代码隐藏 (xaml.cs) 中,ActualWidth 和 ActualHeight 也会得到 0。如果我改变我的主窗口的尺寸,我什至没有得到标准的宽度和高度,更不用说动态的了。
如果缺少代码片段或信息,请告诉我。
这是带有红色边框的图像。你得仔细看看底部(一个红色的小边框):enter image description here
问候 理查德
我尝试过的:
我试图在代码隐藏中获取维度: 高度/宽度(仅获取标准的高度和宽度的 NaN)
ActualHeight/ActualWidth(均为0)
RenderSize.Height/RenderSize.Width(均为0)
我也尝试了这篇文章中的解决方案: Getting current size of WPF controls 这就是我使用 RenderSize 解决方案的原因
【问题讨论】:
-
您何时尝试获取实际/渲染尺寸?
-
大约每秒一次。
-
这可能是因为您在渲染窗口之前获得了实际/渲染大小。您是否在检查渲染是否完成后尝试捕获这些值?
-
@KamilSolecki 是的,在窗口内部有一个可见的网络摄像头流。当它说高度和宽度相同时(在这种情况下,高度的绑定值为 877)。这给出了标准尺寸。但是,如果我将 MainWindow 的尺寸更改为 200x200,例如,它仍然说 Viewbox 尺寸是 877
-
为什么需要
ViewBox的大小?做什么?它的Content将根据ViewBox.Stretch规则调整大小而忽略ViewBox的大小。另一件事,我怀疑布局有问题,您能否截取此窗口的屏幕截图,将Border.Backround设置为Red。它可能是真正的 0 尺寸。