public VentanaPrincipal(VentanaPrincipalViewModel viewModel, AutenticacionPorUsuario autenticacion, IProveedorExtensionMenuView proveedorExtensionMenuView)
        {
            DataContext = ViewModel = viewModel ?? throw new ArgumentNullException(nameof(viewModel));
            InitializeComponent();

            var autenticacionView = new IniciarSesionView(autenticacion);
            var extensionesView   = new PrincipalView(
                ViewModel.Cargar.Select(a => a.Obtener <IExtensionMenu>().ToArray()),
                proveedorExtensionMenuView,
                ViewModel);

            PanelPrincipal.Children.Add(autenticacionView);
            var navegador = new NavegadorViewsPrincipales(this, PanelPrincipal);

            Activated += (s, a) => autenticacionView.DoFocus();

            (this).WhenActivated(d =>
            {
                (this).WhenAnyObservable(v => v.ViewModel.Autenticacion.Autenticar)
                .SelectMany(c => Observable.Return(c).Delay(TimeSpan.FromSeconds(3.8)))
                .ObserveOnDispatcher()
                .Subscribe(s => Fade.In.Apply(PanelCarga))
                .DisposeWith(d);

                (this).WhenAnyObservable(v => v.ViewModel.Cargar)
                .SelectMany(c => Observable.Return(c).Delay(TimeSpan.FromSeconds(1)))
                .ObserveOnDispatcher()
                .Subscribe(u =>
                           Fade.Out
                           .Create(PanelCarga)
                           .Then(() => navegador.IrA(extensionesView))
                           .BeginIn(PanelCarga))
                .DisposeWith(d);

                this.OneWayBind(ViewModel, vm => vm.BackNavigation.IsEnabled, v => v.PanelBotonAtras.Visibility, BoolToVisibility.Convert)
                .DisposeWith(d);

                this.BindCommand(ViewModel, vm => vm.BackNavigation.Execute, v => v.BotonAtras)
                .DisposeWith(d);
            });
        }
 public IniciarSesionView(AutenticacionPorUsuario viewModel)
 {
     InitializeComponent();
     Autenticacion.ViewModel = viewModel;
 }