考虑以下情况:
假设窗口大小为1024x768,而ViewBox填满整个窗口,这意味着屏幕上的TextBox非常大。
我想要获取当前在屏幕上的TextBox的大小。如果我获取DesiredSize、ActualSize或者RenderedSize,我总是得到100。
有什么建议吗?
更新: 我可能可以获取ViewBox的ActualWidth
并将其除以其子元素的ActualWidth
,这将给我当前缩放因子并以某种方式将其公开为属性,但我不确定这是否是最佳方法。
考虑以下情况:
假设窗口大小为1024x768,而ViewBox填满整个窗口,这意味着屏幕上的TextBox非常大。
我想要获取当前在屏幕上的TextBox的大小。如果我获取DesiredSize、ActualSize或者RenderedSize,我总是得到100。
有什么建议吗?
更新: 我可能可以获取ViewBox的ActualWidth
并将其除以其子元素的ActualWidth
,这将给我当前缩放因子并以某种方式将其公开为属性,但我不确定这是否是最佳方法。
这是获取ViewBox
对其子元素施加的ScaleTransform
的方法:
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))