WPF Canvas, cómo agregar hijos dinámicamente con código MVVM detrás

Requisito:

Dibujar una imagen de bitmap (de 1024 x 1024 píxeles) y rectángulo (s) en función de la colección de puntos. El rectángulo debe caber exactamente en la ubicación de los píxeles sobre la imagen. También es necesario agregar algo de texto dentro del rectángulo.

La imagen siempre será solo una y los rectangularjs se agregarán dinámicamente.

Solución actual:

Tener un canvas con control de imagen. Agregue el código dynamic bajo el código detrás del archivo ViewImageResult.xaml.cs.

private void DrawResult(int left, int right, int width, int height) { Border bord = new Border(); bord.BorderThickness = new Thickness(1); bord.BorderBrush = Brushes.Red; bord.Width = width; bord.Height = height; _mainCanvas.Children.Add(bord); Canvas.SetLeft(bord, left); Canvas.SetTop(bord, right); } 

Problema:

Como sigo el patrón MVVM, la colección de puntos para el rectángulo está en mi archivo ViewModel ViewImageResultModel.cs. No puedo agregar el rectángulo hijo dinámicamente desde el archivo ViewModel.

Cualquier ayuda es muy apreciada.

Gracias por adelantado

ItemsControl es tu amigo:

                   

Lo anterior supone que su máquina virtual expone una colección de puntos a través de una propiedad Points y que cada punto VM tiene propiedades de X , Y , Width y Height .

Se agregó IsItemsHost="True" a la solución Canvas of Kent: