Я пишу интерфейс для плагина.У меня есть собственный элемент управления, MainViewModel и класс настроек, которые я сохраняю и загружаюВ этих настройках у меня есть список сущностей, которые я просто хочу дать пользовательскому элементу управления, а он делает все остальное (значки, доступные сущности и т. Д.).Сейчас все хорошо работает в моем коде, единственная проблема в том, что сохранение или нет настроек зависит от флага, который я установил в MainViewModel (ограничение плагина).Через ObservableCollection я замечаю, когда объект добавляется и удаляется, но не когда значения объекта меняются.
Мой базовый усеченный макет:
public class MainViewModel : INotifyPropertyChanged
{
//This Property gets serialized and deserialized
public MySettings Settings { get;set; }
//With Settings.PropertyChanged handling
//I kinda want to keep this lightweight for abstraction/inheritance reasons.
}
[DataContract]
public class Entity
{
//Other Data
[DataMember]
public bool IsInverted{ get;set; }
}
[DataContract]
public class MySettings : INotifyPropertyChanged
{
private ObserverableList<EntityModel> entities;
[DataMember]
public ObserverableList<EntityModel> Entities
{
get => entities;
set
{
if (entities == value) return;
entities = value;
entities.CollectionChanged += (a,b) => OnPropertyChanges(nameof(Entities));
}
}
}
public partial class EntityListControl : UserControl, INotifyPropertyChanged
{
//DependencyProperties
//This property is bound to the MainViewModel.Settings.Entities
public ObservableCollection<CameraModel> CameraList
{
get => (ObservableCollection<CameraModel>)GetValue(CameraListProperty);
set => SetValue(CameraListProperty, value);
}
public ObservableCollection<CameraViewModel> CameraViewModels { get; set; }
//Add/RemoveCommands connecting model list with viewmodel list.
}
public class EntityViewModel : INotifyPropertyChanged
{
private Entity model;
//Properties => model.Property
//Other data like images and names not saved
}
Плюс элемент управления xaml, которыйесть список с флажками для bools и прочегота же модель (это ломает MVVM?).Поэтому мне было интересно, есть ли альтернативный способ сделать это, где мне не нужны секунды ViewModel, или, может быть, хороший способ инкапсулировать список EntityViewModel (и окружающий код) в MainViewModel без привязки различных команд к ииз UserControl (добавить / удалить).