Como hacer que la lista de Asignaturas dependa del colegio

Deiver Cordero Martínez 0 Puntos de reputación
2023-11-09T20:38:51.08+00:00

Estoy trabajando en un programa de registro de notas para mis estudiantes para el año que viene hecho mediante C# y WPF. Resulta que en una de las vistas deben haver dos ComboBox que debe elegir uno el Colegio (trabajo en varios colegios) el cual depende de un modelo llamado LoginViewModel que tiene dos campos: Colegios y Asignaturas (asociados a su respectivo modelo). Necesito asociar un combo box de Colegios para que al seleccionarlo me llene el de Asignaturas.

en el Codigo de inicio de la vista esta esto:

public LoginViewModel ViewModel { get; set; }
       
public Login()
{
    InitializeComponent();

    LoginViewModel viewModel = new LoginViewModel();

    viewModel.GetSchoolsList();
   
    cbSchools.ItemsSource = viewModel.Colegios;
    cbSchools.SelectedValuePath = "Código";
    cbSchools.DisplayMemberPath = "Nombre";





}


Este funciona perfecto, pero en el procedimiento de ChangeSelected de cbSChools...

 private void cbSchool_SelectionChanged(object sender, SelectionChangedEventArgs e)
 {
     if (cbSchools.SelectedValue != null)
     {
         
         ViewModel.GetSubjectsList(Convert.ToInt32(cbSchools.SelectedValue.ToString())); -->aca se da el error
         cbSubjects.ItemsSource = ViewModel.Asignaturas;
        
     }


 }

me genera el siguiente error:

System.NullReferenceException
  HResult=0x80004003
  Mensaje = Object reference not set to an instance of an object.
  Origen = Grade24th
  Seguimiento de la pila:
   en Grade24th.Views.Login.cbSchool_SelectionChanged(Object sender, SelectionChangedEventArgs e) en D:\RNP\Grade24th\Views\Login.xaml.cs: línea 62


¿Qué estoy haciendo mál?

Windows 10
Windows 10
Un sistema operativo de Microsoft que se ejecuta en equipos y tabletas personales.
97 preguntas
0 comentarios No hay comentarios
{count} votos

1 respuesta

Ordenar por: Muy útil
  1. Deiver Cordero Martínez 0 Puntos de reputación
    2024-01-01T21:52:29.1733333+00:00

    Me respondo a mi mismo por aquello que alguien mas tenga que lidiar con esto: El problema esta en que declaré viewModel tanto como propiedad como variable. Cuando lo ví ,me sentí torpe. En este caso la corrección seria de esta manera:

    public LoginViewModel ViewModel { get; set; }
           
    public Login()
    {
        InitializeComponent();
    
        this.viewModel = new LoginViewModel();
        viewModel.GetSchoolsList(); //se puede usar este mismo procedimiento en el constructor de la clase 		LoginViewModel
        this.DataContext=viewModel();
    
    }
    
    

    Ahora, las lineas finales no son necesarias, ya que puedes hacer el combo box de esta manera:

    <ComboBox x:Name=cbSchools ItemsSource={Binding viewModel.Colegios} selectedvaluepath="Código" DisplayMemberPath="Colegio"/>
    
    0 comentarios No hay comentarios