Страницы

Поиск по вопросам

пятница, 10 января 2020 г.

Как прикрепить ViewModel к UserControl?

#c_sharp #net #wpf #mvvm #usercontrol


Как прикрепить ViewModel к UserControl? В случае с window всегда делал так:

        new MainWindow()
        {
            DataContext = new MainVm()
        };


Если делать так для UserControl то компилятор ругается. Как нужно действовать в данной
ситуации?

P.S. Для общей картины обьясню  к какому эффекту я стремлюсь: есть главное окно,
и в зависимости от нажатий пользователся должны отображатся разные, никак не связанные
между собой данные. Поэтому для каждых из этих данных я хочу создать отдельные UserControl
и Vm, и по надобности просто подменять один UserControl на другой. Если у меня неправильный
подход, поправьте меня.
    


Ответы

Ответ 1



Контрол не должен устанавливать себе сам DataContext. DataContext должен устанавливать родительский элемент. Делайте как-то так: То есть: нужные VM для частей, которые представляются в виде контролов, должны быть в MainVM как свойства. (Таким образом, кстати, все VM смогут общаться через центральную VM.) Надеюсь, вы поняли идею. Кстати, и главное окно тоже не должно создавать себе VM. Обычно делается так: public partial class App : Application { MainVM mainVM = new MainVM(); protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); new MainWindow() { DataContext = mainVM }.Show(); } }

Комментариев нет:

Отправить комментарий