gpt4 book ai didi

silverlight - 如何在 Silverlight ListBoxDragDropTarget 中找到放置项目的索引位置

转载 作者:行者123 更新时间:2023-12-04 20:08:11 26 4
gpt4 key购买 nike

我有一个包含在 ListBoxDragDropTarget 中的 silverlight ListBox。我正在监听DDT的Drop事件,但是我不知道如何找到drop Action 的索引。即我想知道用户在哪个索引点将项目放入我的列表框中。在 UI 上,当我在 ListBox 上拖动时,我可以看到一条线指示我悬停的位置,但在放下后,我不知道如何从放置事件中获取放置位置信息。

最佳答案

给定以下 Xaml:

<Grid x:Name="ListBoxDragDropTarget"
Background="Gold"
AllowDrop="True"
Drop="ListBoxDragDropTarget_Drop">
<ListBox x:Name="MyListBox" Margin="50">
<ListBoxItem Content="Item 1" />
<ListBoxItem Content="Item 2" />
<ListBoxItem Content="Item 3" />
</ListBox>
</Grid>

如果您想知道用户将项目放在哪个 ListBoxItem 上,您可以使用 e.GetPosition 获取鼠标的位置,使用 VisualTreeHelper.FindElementsInHostCoordinates 获取点击测试:

private void ListBoxDragDropTarget_Drop(object sender, DragEventArgs e)
{
Point position = e.GetPosition(this.ListBoxDragDropTarget);

var hits = VisualTreeHelper.FindElementsInHostCoordinates(position, this.ListBoxDragDropTarget);

ListBoxItem dropElement = hits.FirstOrDefault(i => i is ListBoxItem) as ListBoxItem;

if (dropElement != null)
{
// Do something with the dropElement... or if you want the index use ItemContainerGenerator
int index = this.MyListBox.ItemContainerGenerator.IndexFromContainer(dropElement);
}
}

关于silverlight - 如何在 Silverlight ListBoxDragDropTarget 中找到放置项目的索引位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815737/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com