11

考虑以下:

假设 Window 是 1024x768 并且 ViewBox 填满了整个窗口,这意味着 TextBox 在屏幕上非常大。

我想获取当前在屏幕上的 TextBox 的大小。如果我得到 DesiredSize 或 ActualSize 甚至 RenderedSize,我总是得到 100。

有什么建议么?

更新:我可能会得到ActualWidthViewBox 并将其除以它ActualWidth的子级,这会给我当前的比例因子并以某种方式将其作为属性公开,但我不确定这是最好的方法。

4

1 回答 1

21

这就是你如何得到它ScaleTransformViewBox孩子的努力:

var child = VisualTreeHelper.GetChild(viewBox, 0) as ContainerVisual;
var scale = child.Transform as ScaleTransform;

viewBox是文本框所在的 ViewBox。然后你可以乘以scale.ScaleX * textBox.ActualWidth得到屏幕坐标的大小

但它变得更加容易!要直接在屏幕坐标中获取该文本框的大小,您可以:

textbox.PointToScreen(new Point(textbox.ActualWidth,textbox.ActualHeight)) - textbox.PointToScreen(new Point(0,0))
于 2011-03-20T20:50:40.467 回答