Добавить информацию о форме в ListView, когда она создана

Im создает формы (прямоугольники, эллипс, линия) в canvas. И тогда у меня есть в другом окне список, где мне нужно ввести информацию о форме (например, положение, размер, какая форма).

У меня этот код в XAML в другом окне:

           

и в c # главного windows, у меня есть наблюдаемая коллекция и этот код:

 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 

EDIT: мне удалось связать ширину и высоту, но я не знаю, как связать положение и форму (прямоугольник или эллипс)

В правильном подходе MVVM вы должны иметь модель представления с абстрактным представлением формы (вместо списка элементов пользовательского интерфейса), например:

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

Теперь вы можете привязать эту модель вида к виду, показанному ниже. Позиция и размер каждой фигуры извлекаются из свойства Bounds Geometry объекта фигуры.

                              

Вы можете создать экземпляр модели представления в конструкторе windows и добавить некоторые примерные данные следующим образом:

 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; } 
  • Плоская кнопка wpf
  • Привязка отображает состояние в режиме просмотра MVVM?
  • WindowsFormsHost всегда самый верхний элемент WPF
  • Связывание шаблонов с прикрепленными свойствами
  • WPF Get Element (s) под мышью
  • Как правильно реализовать BackgroundWorker с обновлениями ProgressBar?
  • Связывание WPF DataGridComboBoxColumn с MVVM
  • RichTextBox (WPF) не имеет строкового свойства «Текст»
  • Связывание WPF DataGrid с DataTable с использованием TemplateColumns
  • WPF: установка ширины (и высоты) в процентах
  • Преимущество WPF-приложения и Winform для бизнес-приложений?
  • Давайте будем гением компьютера.