Имеется (c# wpf) окно, в котором динамически показываются разные контролы (фреймы). Набор показываемых контролов определяется в главной vm. Каждый контрол отвечает за работу с отдельным API. В окне может быть несколько контролов одного типа. Данные между разными контролами (в т.ч. одного типа) не пересекаются. Главное окно (vm) отвечают только за состояние (show/hide) контролов.
Между собой контролы по данным не пересекаются. Набор и количество контролов фиксированы. Динамического создания и размещения не происходит.
Вопрос где размещать vm данные для контролов.
Вариант 1: Все в одной vm. Тогда как описать массив контролов одного вида?
Вариант 2: Для каждого контрола своя полноценная vm. С INotifyPropertyChanged, установкой DataContext и т.д.
Вариант 3: Для контрола создается класс vm (напр Type1ViewModel), а в главной vm что-то типа Type1ViewModel[]
И как следствие вопрос, как в разметке (ну или в главной vm) назначать DataContext?
DataContext="{StaticResource ViewModel}"илиnew UserControl() { DataContext = new ViewModel() }– Alex Krass Dec 20 '17 at 07:02DataContext="{StaticResource ViewModel}"катит, тк неstatic. А вопрос не как, а как лучше (правильно). – Leonid Malyshev Dec 20 '17 at 07:35<MyApiControl DataContext="{StaticResource MyApiVM}"/>. – Alex Krass Dec 20 '17 at 12:19StaticResource(это позволяет связать разные экземпляры VM). – VladD Dec 20 '17 at 12:23