获取ViewBox中项目的大小(在“拉伸”之后)

时间:2010-01-22 19:03:59

标签: wpf size viewbox actualwidth

请考虑以下事项:

            

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

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

有什么建议吗?

更新:我可能会得到ViewBox的ActualWidth并将其除以它的子ActualWidth,这会给我当前的比例因子并将其公开为一个属性不知何故,但我不确定这是最好的方法。

1 个答案:

答案 0 :(得分:19)

这就是ScaleTransform ViewBox对其子女施加的行为:

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))