在不同ListBox的不同ListBoxItems中绘制线条?

时间:2012-08-24 07:19:50

标签: wpf

现在,我有两个列表框,我想从此列表框的listboxitem中绘制一行到另一个列表框的listboxitem。如果可能,两个listboxitem不是水平的。如何获得listboxitem坐标???

2 个答案:

答案 0 :(得分: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));

答案 1 :(得分:0)

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

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

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

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