2010-01-22 58 views
9

考慮以下幾點:獲取規模的項目中視框(在它已經「streched」)

假設窗口爲1024x768,並視框填滿整個窗口, 這意味着TextBox在屏幕上真的很大。

我想獲得TextBox的大小,因爲它當前在屏幕上。 如果我得到DesiredSize或ActualSize或RenderedSize,我總是得到100.

有什麼建議嗎?

更新:我大概可以得到視框的ActualWidth和它的ActualWidth把它的孩子,這將使我目前的比例因子和揭露,作爲某種程度上的屬性,但我不知道這是最好的方法來做到這一點。

+0

您是否考慮過檢查TextBox的「寬度」和「高度」屬性? – CodeMouse92 2011-02-22 18:59:57

+1

@ JasonMc92 - 這真的不會有幫助,因爲寬度和高度最可能爲空。寬度和高度用於*請求*大小,而不是要求實際大小。 – 2011-03-09 21:58:02

回答

17

這是你如何讓ScaleTransformViewBox發揮它的孩子。

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

這裏viewBox是視框是文本框坐在 那麼你可以乘scale.ScaleX * textBox.ActualWidth,你會得到在屏幕座標大小

但它變得更容易!要直接在屏幕座標中獲取文本框的大小,請執行以下操作:

textbox.PointToScreen(new Point(textbox.ActualWidth,textbox.ActualHeight)) - textbox.PointToScreen(new Point(0,0)) 
相關問題