Существует ViewModel, который состоит из некоторого связанного объекта (узлов и линий (. Как можно отобразить (синхронизировать) эти виртуальные машины в представлении и сохранить соединения объектов. Я использую некоторый DataTemplate для сопоставления модели с представлением, но каждый объект будет синхронизирован) (с мощной привязкой) к связанному с ним объекту, но как я могу связать (и синхронизировать) этот созданный DataTemplate элемент пользовательского интерфейса вместе. Я описываю проблему с другой точки зрения здесь: Синхронизация модели представления и представления
WPF ViewModel не является активным ведущим
Ответы (3)
Чтобы ваше представление было синхронизировано, вы должны использовать привязки, ваши источники привязок должны реализовывать определенные интерфейсы или быть свойствами зависимостей. Для коллекций необходимо реализовать INotifyCollectionChanged
, а для свойства, которые вы бы использовали INotifyPropertyChanged
, если вы затем измените источник вашего взгляда также изменится.
Помимо реализации INotifyPropertyChanged и использования ICollectionChanged (ObservableCollection) и привязки к представлениям, вы можете рассмотреть возможность реализации IEditableObject, если вы хотите поддерживать редактирование данных.
Этот интерфейс позволяет отменять действия редактирования. Без реализации IEditableObject вам нужно будет вернуться к источнику данных, чтобы сбросить исходные значения при отмене изменений. Интерфейс также поддерживается DataGrid.
Вы можете синхронизировать виртуальную машину и представление с помощью логики команд ретрансляции.
пример тренировки можно посмотреть здесь
Привязка свойства WindowState объекта окно в WPF с использованием MVVM