¿Dibujando una línea en diferentes ListBoxItems de diferentes ListBox?

Ahora, tengo dos cuadros de lista, quiero dibujar una línea desde un elemento de cuadro de lista de este cuadro de lista a un elemento de cuadro de lista de otro cuadro de lista. los dos listboxitem no son horizontales si es posible. ¿Cómo obtener la coordenada de listboxitem?

preguntado el 24 de agosto de 12 a las 08:08

2 Respuestas

Primero debe obtener los dos elementos que desea conectar. Si tienes ambos artículos puedes empezar a calcular los puntos. Buscaría un Panel principal de ambos cuadros de lista y calcularía los puntos relativos a ese Panel.

Como ejemplo, crea Grid dentro de dos cuadros de lista. Ahora solo tienes que calcular los puntos de ambos elementos. Ahora agregue una línea a la cuadrícula que contenga los dos puntos calculados (punto1 = x1, y1 y punto2 = x2, y2).

Pero recuerda. No es tan fácil como parece porque si haces scroll tienes que actualizar los puntos. Y exactamente en ese punto aparece el siguiente problema. Si se desplaza hacia afuera de la vista (los elementos que desea conectar), la línea seguirá siendo visible. Así que hay que calcular si la línea es visible o no...

La mejor manera sería crear un DataGrid y conectar dos celdas porque aún es más fácil que dos cuadros de lista diferentes.

Respondido 24 ago 12, 11:08

Este código funcionó para mí (aquí obtengo las coordenadas del elemento seleccionado en relación con su ventana alojada):

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));

Respondido 24 ago 12, 11:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.