WPF獲取控制項位置的方法

2021-06-28 07:33:44 字數 1380 閱讀 4315

wpf中提供了多種布局方式,因此在布局中的定位相對於winform的絕對定位要靈活的多,在wpf中,控制項均沒有如winform中的location屬性,但是,對應的提供了各種設定與獲取相對於承載元素的定位

一般來說,wpf中的布局控制項大多都是相對定位(網格,流式,面板等),如果我們要改變控制項在布局中的位置可以用margin,padding等類似html中的方式,雖然說這種方式在winform也可用,但是wpf中的布局方式與靈活性已經更接近與html了

wpf中也保留了相對傳統的布局方式,如在canvas容器中可以用setleft(),settop()來絕對定位

關於控制項定位

詳細具體可參考

下來我們來簡單描述幾種獲取控制項位置的方式,這也是很多新手容易糾結的地方

1.獲取滑鼠在控制項中的座標

//在mouse相關的事件中的方式    

void item_mousedown(object sender, mousebuttoneventargs e)  

//或者mouse的靜態方法getposition() 獲取與指定元素相對的滑鼠位置=>等同於上面   

point point = mouse.getposition(canvas); 

2.獲取控制項相對於另一控制項的座標

//將相對於此元素的某個點轉換至相對於指定元素的座標中 

void item_mousedown(object sender, mousebuttoneventargs e)  

//將相對於此元素的某個點轉換至相對於指定元素的座標中 

void item_mousedown(object sender, mousebuttoneventargs e)  

3.獲取控制項在window中的座標

window window =  window.getwindow(canvas);  

point  point  =  canvas.transformtoancestor(window).transform(new point(0, 0));  

另外,c#中還提供了控制項座標與螢幕座標之間的轉換,pointfromscreen,pointtoscreen,這些就不再一一說明了

總之,根據實際情況選擇最適合的方式來獲取控制項座標或定位

WPF 獲取控制項間的相對位置

wpf 獲取控制項間的相對位置 周銀輝 我們知道wpf有著比較靈活的布局方式,關於某個控制項的座標,canvas中的元素最簡單,我們可以直接通過其getleft 與gettop方法來獲取,但其它布局面板中的,以及存在於不同布局面板中的元素中間的相對位置就比較讓我們頭疼了,其實有簡單方法的,不知你有沒...

WPF 獲取控制項間的相對位置

wpf 獲取控制項間的相對位置 周銀輝 我們知道wpf有著比較靈活的布局方式,關於某個控制項的座標,canvas中的元素最簡單,我們可以直接通過其getleft 與gettop方法來獲取,但其它布局面板中的,以及存在於不同布局面板中的元素中間的相對位置就比較讓我們頭疼了,其實有簡單方法的,不知你有沒...

WPF 獲取控制項間的相對位置

wpf 獲取控制項間的相對位置 周銀輝 我們知道wpf有著比較靈活的布局方式,關於某個控制項的座標,canvas中的元素最簡單,我們可以直接通過其getleft 與gettop方法來獲取,但其它布局面板中的,以及存在於不同布局面板中的元素中間的相對位置就比較讓我們頭疼了,其實有簡單方法的,不知你有沒...