Я пишу приложение WPF, в основном придерживаясь шаблона проектирования MVVM. Приложение имеет различные учебные модули, разбитые на разные категории, которые должны быть выполнены пользователем. Модули организованы в иерархическое меню. Мой ViewModel имеет класс с именем MenuPageViewModel
, который предоставляет информацию, необходимую для визуализации MenuNode
. Естественно, элементы терминала в дереве меню имеют контент, который я хотел бы показать пользователю. Этот контент может быть одним из множества различных типов модулей. В настоящее время, когда пользователь выбирает модуль в меню, я не вижу возможности использовать большой условный блок для определения того, какой тип ViewModel я хотел бы вернуть для отображения, основываясь на типе Content Property MenuItem. Например ...
if (CurrentlySelectedMenuItem.Content is Lesson)
return new LessonViewModel(CurrentlySelectedMenuItem.Content as Lesson);
if (CurrentlySelectedMenuItem.Content is SkillsCheck)
return new SkillsCheckViewModel(CurrentlySelectedMenuItem.Content as SkillsCheck);
Может ли кто-нибудь дать мне подсказку о более элегантном и понятном подходе? Прямо сейчас, если я добавлю новый тип модуля, я должен помнить, чтобы обновить этот условный блок, и это как бы меня раздражает.
Спасибо.