Can't change views on WPF C#

I’m having a problem while doing a project on WPF C# where depending on the type user that gets it from a table in SQL Server changes de type of the view of my project.

For example, if the type user is 1 (client) the view will be ControlPanelViewCommand, if it’s 3 will be AdminControlPanelViewCommand, I’ll show u what I’ve been trying to do for the last 2 hours and it kinda works but when I change the view back it doesn’t come back

After opening the program and doing the login:
After opening the program and doing the login
After changing view and going back to the first one:
After changing view and going back to the first one

Code when the combo box is clicked:

// "PRIVILEGES" OF EACH TYPE OF USER
            if (Convert.ToInt32(typeUser) == 1)
            {
                ManageReservationsRadionButton.Visibility = Visibility.Collapsed;
                ManageRequestsRadioButton.Visibility = Visibility.Collapsed;
                ManageUsersRadionButton.Visibility = Visibility.Collapsed;
                LogoutRadioButton.Margin = new Thickness(0, 490, 0, 0);
                ControlPanelRadioButton.IsChecked = true;
                //ControlPanelRadioButton.Command = ;
            }
            else if (Convert.ToInt32(typeUser) == 2)
            {
                ControlPanelRadioButton.Visibility = Visibility.Collapsed;
                ManageUsersRadionButton.Visibility = Visibility.Collapsed;
                RequestsRadioButton.Visibility = Visibility.Collapsed;
                LogoutRadioButton.Margin = new Thickness(0, 490, 0, 0);
                ManageReservationsRadionButton.IsChecked = true;
            }
            else
            {
                RequestsRadioButton.Visibility = Visibility.Collapsed;
                LogoutRadioButton.Margin = new Thickness(0, 350, 0, 0);
                ControlPanelRadioButton.IsChecked = true;
                //ControlPanelRadioButton.Command = ;
            }
<RadioButton Content="Painel de Controlo"
                             Height="50"
                             Foreground="White"
                             Margin="0,20,0,0"
                             Style="{StaticResource MenuButtonTheme}"
                             Command="{Binding ControlPanelViewCommand}"
                             x:Name="ControlPanelRadioButton"/>~
<DataTemplate DataType="{x:Type viewModel:ControlPanelViewModel}">
                <view:ControlPanel />
            </DataTemplate>

            <DataTemplate DataType="{x:Type viewModel:AdminControlPanelViewModel}">
                <view:AdminControlPanel />
            </DataTemplate>
class MainViewModel : ObservableObject
    {
        // CONNECTION
        SqlConnection con = new SqlConnection("Data Source=BAGACINHO;Initial Catalog=reservas_PAP;Integrated Security=True");

        // VARIABLES
        string data, typeUser;

        // ------------------------------------ RelayCommand ---------------------------------------- //

        public RelayCommand ControlPanelViewCommand { get; set; }

        public RelayCommand AdminControlPanelViewCommand { get; set; }

        public RelayCommand RequestsViewCommand { get; set; }

        public RelayCommand ManageReservationsViewCommand { get; set; }

        public RelayCommand ManageRequestsViewCommand { get; set; }

        public RelayCommand ManageUsersViewCommand { get; set; }

        // ------------------------------------- ViewModel ----------------------------------------- //

        public ControlPanelViewModel ControlPanelVM { get; set; }

        public AdminControlPanelViewModel AdminControlPanelVM { get; set; }

        public RequestsViewModel RequestsVM { get; set; }

        public ManageReservationsViewModel ManageReservationsVM { get; set; }

        public ManageRequestsViewModel ManageRequestsVM { get; set; }

        public ManageUsersViewModel ManageUsersVM { get; set; }

        // ----------------------------------- CurrentView ---------------------------------------- //

        private object _currentView;

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

        public MainViewModel()
        {
            // CALLS OF THE VIEWMODELS
            ControlPanelVM = new ControlPanelViewModel();
            AdminControlPanelVM = new AdminControlPanelViewModel();
            RequestsVM = new RequestsViewModel();
            ManageReservationsVM = new ManageReservationsViewModel();
            ManageRequestsVM = new ManageRequestsViewModel();
            ManageUsersVM = new ManageUsersViewModel();

            // OPEN CONNECTION
            con.Open();

            // SQL QUERY
            data = "SELECT type_user FROM Users WHERE username = @user";

            using (SqlCommand cmd = new SqlCommand(data, con))
            {
                cmd.Parameters.AddWithValue("@user", Settings.Default.n_cliente);

                using (SqlDataReader reader = cmd.ExecuteReader())
                {
                    while (reader.Read())
                    {
                        typeUser = reader["type_user"].ToString();
                    }
                }
            }

            // CLOSE CONNECTION
            con.Close();

            // CURRENT VIEW OF THE TYPE OF THE USER
            if (Convert.ToInt32(typeUser) == 1)
            {
                CurrentView = ControlPanelVM;
            }
            else if (Convert.ToInt32(typeUser) == 2)
            {
                CurrentView = ManageReservationsVM;
            }
            else
            {
                CurrentView = AdminControlPanelVM;
            }

            // ----------------------------------- ViewCommand ---------------------------------------- //
            ControlPanelViewCommand = new RelayCommand(o => { CurrentView = ControlPanelVM; });

            AdminControlPanelViewCommand = new RelayCommand(o => { CurrentView = AdminControlPanelVM; });

            RequestsViewCommand = new RelayCommand(o => { CurrentView = RequestsVM; });

            ManageReservationsViewCommand = new RelayCommand(o => { CurrentView = ManageReservationsVM; });

            ManageRequestsViewCommand = new RelayCommand(o => { CurrentView = ManageRequestsVM; });

            ManageUsersViewCommand = new RelayCommand(o => { CurrentView = ManageUsersVM; });
        }
    }

There’s all the code supposedly is needed for it, and I want to understand why isn’t it working.

Tried doing some research but couldn’t find anything useful

>Solution :

You need to just show/assign the control you want to see

 if (Convert.ToInt32(typeUser) == 1)
 {
      CurrentView = ControlPanelVM;
      ManageReservationsRadionButton.Visibility = Visibility.Collapsed;
      ManageRequestsRadioButton.Visibility = Visibility.Collapsed;
      ManageUsersRadionButton.Visibility = Visibility.Collapsed;
      LogoutRadioButton.Margin = new Thickness(0, 490, 0, 0);
      ControlPanelRadioButton.IsChecked = true;
      //ControlPanelRadioButton.Command = ;
 }
        

 else if (Convert.ToInt32(typeUser) == 2)
 {
    CurrentView = ManageReservationsVM;
    ControlPanelRadioButton.Visibility = Visibility.Collapsed;
    ManageUsersRadionButton.Visibility = Visibility.Collapsed;
    RequestsRadioButton.Visibility = Visibility.Collapsed;
    LogoutRadioButton.Margin = new Thickness(0, 490, 0, 0);
    ManageReservationsRadionButton.IsChecked = true;
 }
 else
 {
    CurrentView = AdminControlPanelVM;
    RequestsRadioButton.Visibility = Visibility.Collapsed;
    LogoutRadioButton.Margin = new Thickness(0, 350, 0, 0);
    ControlPanelRadioButton.IsChecked = true;
    //ControlPanelRadioButton.Command = ;
 }

Leave a Reply