积极答复者
如何修改Win8 Metro里,在Drag ListView Item 时的背景图片

问题
答案
-
Canvas 才有Left Top Right Bottom 四个附加属性,用来定义一个元素在Canvas中的相对位置。 一般如果我们是用的Grid布局的话,那么Margin 外边距这个属性用来确定一个元素在Grid中的位置。
所以你可能需要外面得有一个Canvas包裹,然后通过改变这四个属性来实现移动。 请检查下你的移动的时候外面是不是一个Grid ,如果是,换一下。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Lake_zheng 2012年8月2日 0:34
全部回复
-
不行,除非你不是通过Drag and Drop事件来实现,而是通过Pointer的相关事件,比如Pressed Released Moved 事件,然后自定义移动过程中的显示的内容,和自定义拖动后的插入和源数据删除的动作。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
-
你可以在移动的时候做HitTest来获得当下的元素是什么。 参考此贴:http://social.msdn.microsoft.com/Forums/zh-CN/metroappzhcn/thread/8c5345ff-5a99-46df-9485-a31dcbf0dbf8/ (C++, 但原理类似,你可以将代码转一下) 下面的代码是C#的,类似的获取当前指针下方的是否为ListViewItem
var elements = VisualTreeHelper.FindElementsInHostCoordinates(e.GetCurrentPoint(sender as ListView).Position, sender as ListView); foreach (var element in elements) { if (element is ListViewItem) { ListViewItem item = element as ListViewItem; ... } } // 判断下方是否为ListViewItem的代码。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
-
Canvas 才有Left Top Right Bottom 四个附加属性,用来定义一个元素在Canvas中的相对位置。 一般如果我们是用的Grid布局的话,那么Margin 外边距这个属性用来确定一个元素在Grid中的位置。
所以你可能需要外面得有一个Canvas包裹,然后通过改变这四个属性来实现移动。 请检查下你的移动的时候外面是不是一个Grid ,如果是,换一下。
Bob Bao [MSFT]
MSDN Community Support | Feedback to us
- 已标记为答案 Lake_zheng 2012年8月2日 0:34