2013-03-20 106 views
0
Point relativePoint = myVisual.TransformToAncestor(rootVisual) 
           .Transform(new Point(0, 0)); 

這個代碼塊是非常有用的,但是,我使用MVVM因此代碼塊對我來說是無用的嗎?如何獲取WPF中控件的XY座標?

我想在不使用rootVisual的情況下獲取X & Y.

謝謝&最好的問候。

+6

如果你使用MVVM,您的視圖模型不應該在乎的觀點,所以你爲什麼要這樣做? – 2013-03-20 13:29:48

+0

我想通過ViewModel在2個控件之間畫一條線。 – vercin 2013-03-20 13:31:21

+1

這不是ViewModel的工作,你應該在視圖中進行。 ViewModel應該只觸發這個動作(例如使用事件或信使/中介),而不是實際執行它。該視圖可以在代碼隱藏中訂閱事件以實際繪製線條。 – 2013-03-20 14:31:35

回答

0

林不知道我是否理解你的問題的權利。你根本不想使用rootVisual,或者只能通過myVisual訪問?

是這樣的:

var parent = VisualTreeHelper.GetParent(myVisual) as UIElement; 
    Point relativePoint = myVisual.TransformToAncestor(parent) 
          .Transform(new Point(0, 0)); 
0

Window.Left給你的x座標,而window.Top給你Y座標