Agregar información de forma a un ListView cuando se crea

Im creando formas (rectangularjs, elipse, línea) en un canvas. Y luego tengo en otra ventana una vista de lista donde necesito ingresar la información de la forma (como la posición, el tamaño y la forma).

Tengo este código en XAML en otra ventana:

           

y en c # de la ventana principal, tengo una colección observable y este código:

 ObservableCollection shapes = new ObservableCollection(); myRect.Width = var1; myRect.Height = var2; Page.Children.Add(myRect); Canvas.SetLeft(myRect, posx); Canvas.SetTop(myRect, posy); shapes.Add(myRect); 2ndwindow.Information.ItemsSource = shapes; // this is working because the 2ndwindow is owned by the mainwindow 

EDITAR: logré vincular el ancho y la altura, pero no sé cómo enlazar la posición y la forma en que está (rectángulo o elipse)

En un enfoque MVVM adecuado, debe tener un modelo de vista con una representación abstracta de una forma (en lugar de una lista de elementos de la interfaz de usuario), por ejemplo, de esta manera:

 public class ShapeData { public string Type { get; set; } public Geometry Geometry { get; set; } public Brush Fill { get; set; } public Brush Stroke { get; set; } public double StrokeThickness { get; set; } } public class ViewModel { public ObservableCollection Shapes { get; } = new ObservableCollection(); } 

Ahora podría vincular este modelo de vista a una vista como se muestra a continuación. La posición y el tamaño de cada forma se recuperan de la propiedad Bounds de la Geometry de un objeto de forma.

                              

Puede crear una instancia de modelo de vista en el constructor de su ventana y agregar algunos datos de muestra como este:

 public MainWindow() { InitializeComponent(); var viewModel = new ViewModel(); viewModel.Shapes.Add(new ShapeData { Type = "Circle", Geometry = new EllipseGeometry(new Point(100, 100), 50, 50), Fill = Brushes.Orange, Stroke = Brushes.Navy, StrokeThickness = 2 }); viewModel.Shapes.Add(new ShapeData { Type = "Rectangle", Geometry = new RectangleGeometry(new Rect(200, 50, 50, 100)), Fill = Brushes.Yellow, Stroke = Brushes.DarkGreen, StrokeThickness = 2 }); DataContext = viewModel; }