Как динамически переключать пользовательские элементы управления с общей моделью просмотра? - PullRequest
0 голосов
/ 07 мая 2020

У меня есть окно, разделенное на две горизонтальные половины, которые содержат пользовательские элементы управления, для простоты назовем их Left и Right. И Left, и Right могут содержать несколько представлений: Left показывает Left1, Left2 или Left3, а Right всегда показывает RightTop в верхней половине Right, а RightBottom1 или RightBottom2 в нижней половине. Все пользовательские элементы управления, относящиеся к левой стороне, используют модель LeftView, тогда как все элементы управления, относящиеся к правой стороне, используют модель RightView.

enter image description here

Я пытаюсь использовать структуру MVVM для динамического переключения между представлениями, но большинство ответов на аналогичные вопросы основаны на том факте, что разные представления имеют разные модели представления, что означает, что приложение должно отображать представление на основе текущей активной модели представления.

Однако в моем случае не все отдельные представления должны иметь свои отдельные модели представления, поскольку вся необходимая им информация содержится либо в LeftViewmodel, либо в RightViewmodel. Как я могу использовать MVVM для динамического переключения представлений, например, когда выбрана кнопка меню или что-то еще?

1 Ответ

1 голос
/ 07 мая 2020

Как и все в WPF и MVVM, всегда есть несколько способов сделать что-то. Но вот мой взгляд на это:

Поскольку вы разделяете свои две модели представления с несколькими представлениями:

  • Вам необходимо иметь состояние в каждой модели представления, чтобы определить, какой представления для отображения. Это могут быть простые свойства типа bool. IsRightBottom1Visible или IsRightBottom2Visible и т. Д. c.
  • В своем XAML привяжите видимость ваших представлений к новым свойствам и используйте BooleanToVisibilityConverter для отображения / скрытия.
  • Для вашего меню или кнопок вы можете привязать их к свойствам ICommand в ваши модели просмотра и используйте RelayCommand для установки ваших свойств bool.

Надеюсь, это поможет.

...