0

Подскажите, вот у меня есть UserControl на нем listBox, при нажатии на Item необходимо помещать Page во Frame Content главной формы (MainWindow). Как такое можно провернуть?

  • Советую отказаться от Frame, он мало чего умеет и работать с ним по MVVM правилам не очень удобно. – EvgeniyZ Feb 04 '19 at 12:58
  • EvgeniyZ, подскажи что лучше. И с помощью чего это можно сделать? – Артур Чал Feb 04 '19 at 13:11
  • https://ru.stackoverflow.com/a/765122/220553 – EvgeniyZ Feb 04 '19 at 13:11
  • Здесь получается, если только в одном окне показывать, а можно через UserControl отобразить в главном окне? – Артур Чал Feb 04 '19 at 13:19
  • Почему в одном окне? У вас будет все тоже, что и с Frame, только более удобней, со своим VM для каждого UserControl. Вместо Frame у вас будет ContentPresenter, все страницы заменяем с Page на UserControl, а контент задаете обычным изменением свойства в нужной VM. У вас в таком варианте гибкости в разы больше. – EvgeniyZ Feb 04 '19 at 13:33
  • EvgeniyZ, Вот смотри я вот так сделал: 1. На главную форму прописал views:Software/ – Артур Чал Feb 04 '19 at 14:19
  • Сделал для UserControl VM.
  • – Артур Чал Feb 04 '19 at 14:20
  • Потом в другом UserControl Прописал public object CurrentPage { get; set; } CurrentPage = new SoftwareViewModel();
  • – Артур Чал Feb 04 '19 at 14:21
  • Но в итоге ничего не отображается – Артур Чал Feb 04 '19 at 14:22
  • Это ресурсы, которые не обязательно прописывать на главную. Ими вы говорите, что "если контент == viewmodels:SoftwareViewModel то отображать такое содержимое. Также имя тут лишнее. 2. Не вижу, где вы задали ContentPresenter привязанный к свойству CurrentPage. 3. Задан ли у вас DataContext у контрола? Может студия пишет вам ошибки привязки?
  • – EvgeniyZ Feb 04 '19 at 14:33