После некоторого начального чтения WPF и MVVM я сейчас работаю над небольшим отладочным приложением для цифрового контроллера ввода-вывода.В этом приложении у меня есть дерево моделей представлений, которое выглядит следующим образом:
IOControllerViewModel> ConfigurationViewModels> PortViewModels> ChannelViewModels
Это соответствует бизнес-объектам, где IOController содержит наборконфигураций, который затем содержит список портов, который затем содержит список каналов, которые в конечном итоге представляют каналы ввода / вывода контроллера ввода-вывода.
Но теперь мой вопрос заключается в том, где обращаться с «логикой»?
Например, я хочу переключить состояние выходного канала.IOControllerViewModel в настоящее время является единственным экземпляром, который имеет ссылку на бизнес-объект, который содержит необходимый метод ToggleChannel ().Теперь я вижу три варианта:
Поместите имя входа в ChannelViewModel.Таким образом, передайте необходимый бизнес-объект от моего корня до самого листа.
Поместите логику в IOControllerViewModel.Таким образом, событие или что-то подобное должно запускаться ChannelViewModel, а затем обрабатываться IOControllerViewModel.
Ввести контроллер, который отвечает за любую логику, и опубликовать контроллер во всех моделях представления.
Любой другой вариант?Лучшая практика?
Спасибо большое!