Kiedy chce otworzyć nowe child window w ViewModelu głównego okna robie coś takiego
ChildWindow cw = new ChildWindow();
childWindowViewModel = ChildWindowViewModel(parametr1, parametr2);
cw.DataContext = childWindowViewModel;
cw.Show();
Czy da się teraz zrobić identycznie tylko aby ChildWidnow było UserControl? Nie chce otwierać nowego okna, chciałbym schować kontrolki głównego okna i pokazać w nim usercontrol.
Dodatkowo z głównego viewmodelu muszę przekazać kilka rzeczy do viewmodelu dziecka.
Wiem że mógłbym w UserControl wystawić DependencyProperty i obsługiwać wszystko z głównego ViewModelu ale chciałbym skrócić główny viewmodel. Czy jest na to jakiś sposób czy to jest raczej zła praktyka?
Najlepiej chciałbym mieć taką strukturę
MainWindow
UserControl1
UserControl2
UserControl3
Każdy usercontrol miałby swój ViewModel i jakieś parametry przekazane z głównego viewmodelu. Próbowałem coś takiego zrobić w MainWidnow.cs
var mainWindowVM = new MainWindowViewModel();
this.DataContext = mainWindowVM;
var userControl1VM = new UserControl1lViewModel(mainWindow.SomeProperty);
this.userControl1.DataContext = userControl1VM;
//itp
Ale nie jestem pewny czy to jest ok.