¿Cómo puedo abrir otra vista en WPF MVVM usando controladores y comandos de clic? (¿Es razonable mi solución?)

Estoy escribiendo una aplicación WPF que tiene dos ventanas.

tengo unMainWindowViewModel que tiene dos modelos de vista más:AllTagsViewModel yPlotViewModel.

public AllTagsViewModel AllTagsViewModel { get; private set; }

public PlotViewModel PlotViewModel { get; private set; }

Por el momento, estoy usando esta solución como un controlador de clics en la ventana principal:

private void LaunchPlotWindow_OnClick(object sender, RoutedEventArgs e)
    {
        if (PlotWindow.GlobalInstanceCount == 0)
        {
            PlotWindow plotWindow = new PlotWindow();

            PlotViewModel context = GetViewModel().PlotViewModel;
            plotWindow.DataContext = context; 

            plotWindow.Show();
        }
    }

También estoy vinculando un comando al botón. El comando está en elMainWindowViewModel e instancia un nuevo PlotViewModel usando el constructorPlotViewModel(AllTagsViewModel atvm).

El problema con esto es que el comando que configura el contexto de datos se ejecuta después del controlador de clics. esto significa que elPlotWindow funciona como se esperaba la segunda vez que se abre.

¿Cuál es una mejor solución para este problema? ¿Puedo usar un evento para mantener elAllTagsViewModel en elPlotViewModel actualizado en todo momento con el de laMainWindowViewModel? Mi solución en este momento se siente como un truco y una práctica muy pobre.

Gracias por el consejo.

Respuestas a la pregunta(2)

Su respuesta a la pregunta