Я немного борюсь со структурой моего проекта и столкнулся с проблемой, которая волнует меня, демонстрируя, что я все еще не хватает хорошего понимания правильного способа делать что-то.PropertyChanged для дочерних свойств в MVVM
Что я имею в настоящее время:
Программа отображает информацию для судоходства, это основано на общем проект, который содержит проформы, который содержит грузы, которые содержат контейнеры (это упрощено для данного примера)
Так для того, чтобы отслеживать текущие выбранные объекты (проект, проформы и т.д.) у меня есть класс с именем ProjectTree, который выглядит примерно так:
Public class ProjectTree
{
Public Project SelectedProject { get; set; }
Public Proforma SelectedProforma { get; set; }
public Shipment SelectedShipment { get; set; }
}
снова это упрощается, так как в настоящее время проекта self содержит список Proformas, у меня есть функция в Project под названием LoadProformas()
, которая создает новый поток и загружает проформы проекта в ObservableCollection
внутри самого проекта (загрузка выполняется с помощью набора IManagers
, который обрабатывает всю загрузку данных, сохранение и т. д. .)
Теперь проблема я столкнулась с том, что говорят мои ViewModel ProformaListViewModel имеет доступ к ProjectTree
поэтому он может позвонить в LoadProformas()
по проекту, я бегу в вопрос о _ProjectTree.SelectedProject.ProformaList
привязки данных, как я не буду знать, когда данные фактически были загружены, так как (afaik) NotifyOfPropertyChange
не будут проходить через viewmodel в этом сценарии. Теперь я всегда могу использовать EventAggregator и запускать событие, когда данные загружаются (и это то, что я делал в прошлом), однако всякий раз, когда я смотрю на это, кажется немного ... беспорядочным, чтобы запускать несвязанные события из дочерний объект для родителя.
Я пропустил что-то важное в моем понимании здесь? Или использование этого события было бы разумным способом выполнить то, что мне нужно?
EDIT:
Просто, чтобы очистить это вверх, причина им пытаются сделать это, потому что у каждого проекта есть список проформ и каждый проформы список партий и т.д. Первоначально менеджеры обрабатываются списки объектов, а также загрузку и сохранение, но я обнаружил, что, если они полностью отключены, что вызывает проблемы при попытке выполнить работу с проектом на основе его поставок (например)
А, я даже не думал об этом, так что спасибо – Ben