Не изменяется MainWindow из View

Хочу реализовать программу с одним главным изменяющимся окном.

Для этого необходимо изменять UserControl-леры по нажатию не только из самого главного окна, но и из самих UserControl-леров.

То есть по нажатию кнопки из UserControl_1 нужно менять отображаемый в главном окне UserControl_1 на UserControl_2.

Для этого я передаю MainViewModel в другие ViewModel.

Код Главного окна

class MainViewModel : ObservableObject
{

    public RelayCommand HomeViewCommand { get; set; }
    public RelayCommand TestingViewCommand { get; set; }

    public HomeViewModel HomeVM { get; set; }
    public TestingViewModel TestingVM { get; set; }

    private object _currentView;

    public object CurrentView
    {
        get { return _currentView; }
        set
        {
            _currentView = value;
            OnPropertyChanged();
        }
    }

    public MainViewModel()
    {
        HomeVM = new HomeViewModel(this);
        TestingVM = new TestingViewModel(this);
        CurrentView = HomeVM;
        //Команды для кнопок
        HomeViewCommand    = new RelayCommand(o => { CurrentView = HomeVM; });
        TestingViewCommand = new RelayCommand(o => { CurrentView = TestingVM; });
    }
}

Код первого UserController-a

class HomeViewModel : ObservableObject
{
    public RelayCommand TestingViewCommand { get; set; }

    public HomeViewModel(MainViewModel obj)
    {
        //Команды для кнопок
        TestingViewCommand = obj.TestingViewCommand;
    }
}

Код RelayCommand

internal class RelayCommand : ICommand
{
    private Action<object> _execute;
    private Func<object, bool> _canExecute;

    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }

    public RelayCommand(Action<object> execute, Func<object, bool> canExecute = null)
    {
        _execute = execute;
        _canExecute = canExecute;
    }

    public bool CanExecute(object parametr)
    {
        return _canExecute == null || _canExecute(parametr);
    }

    public void Execute(object parametr)
    {
        _execute(parametr);
    }
}

HomeView у меня находиться сразу на главной странице. В нем есть кнопки которые должны изменять HomeView на TestingView.

Но при нажатии главное окно никак не изменяется. Как это исправить?


Ответы (0 шт):