0

现在,我有两个列表框,我想从这个列表框的列表框项到另一个列表框的列表框项画一条线。如果可能,这两个 listboxitem 不是水平的。如何获取listboxitem坐标???

4

2 回答 2

0

这段代码对我有用(在这里我得到了所选项目相对于其托管窗口的坐标):

object selectedEntry = (object)myListBox.SelectedItem;
ListBoxItem lbi = this.myListBox.ItemContainerGenerator.ContainerFromItem(selectedEntry) as ListBoxItem;
Point p = lbi.TranslatePoint(new Point(0, 0), Window.GetWindow(lbi));
于 2012-08-24T10:06:22.910 回答
0

首先,您必须获得要连接的两个项目。如果你有这两个项目,你可以开始计算积分。我会寻找两个列表框的父面板并计算相对于该面板的点。

例如,您在两个列表框中创建 Grid。现在你只需要计算这两个项目的点。现在向包含两个计算点(point1 = x1, y1 和 point2 = x2, y2)的网格添加一条线。

但要记住。这并不像看起来那么容易,因为如果你滚动你必须更新点。正是在这一点上,下一个问题出现了。如果您滚动视图(您要连接的项目),则该行仍然可见。所以你必须计算这条线是否可见......

最好的方法是创建一个 DataGrid 并连接两个单元格,因为它仍然比两个不同的列表框更容易。

于 2012-08-24T10:41:29.070 回答