2012-06-18 77 views
9

我有一個圖像編輯應用程序,並且我有添加到AdornerLayer的自定義裝飾。當用戶點擊一個裝飾者時,我想把它帶到最前面 - 這意味着如果它被拖到另一個裝飾者身上,我希望第一個點擊被最頂端的裝飾者抓住。如何更改Wpf AdornerLayer兒童的Z順序?

我無法弄清楚如何改變AdornerLayer的子元素的z順序。它似乎不允許我對它們進行分類。即使我刪除並重新添加Adorner,它也不會達到最高。

+0

做其他(非最頂層)裝飾器需要趕上事件嗎? –

+0

不,我希望最近點擊的裝飾者成爲最頂級的裝飾物,並抓住所有可見部分的點擊。 – Sugrue

回答

5

我也有類似的問題,只是需要我的裝飾器的具體順序。我結束了使用反射來設置命令:

var setZOrderMethodInfo = adornerLayer.GetType().GetMethod("SetAdornerZOrder", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);  
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner1, 0 });  
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner2, 1 }); 

http://social.msdn.microsoft.com/Forums/en/wpf/thread/40bff84e-c4b5-4ea0-87ea-43461df9f24b