es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Añadir elementos a ObservableCollection implica cambiar un campo de soporte en el mismo ViewModel.

He estado experimentando con Winui 3 y he notado un problema que no estoy seguro si es por mi cuenta o si es algún tipo de error. Tengo un ViewModel que, al navegar, pasa un objeto Model al ViewModel que luego empuja los datos del Modelo a los campos de respaldo.

Al mismo tiempo, el ViewModel consulta la base de datos y lo ejecuta a través de un foreach y lo agrega a un ObservableCollection. Lo que he encontrado es que, en el primer bucle foreach, está reemplazando el valor del campo de respaldo UsersID con el ID del primer elemento a través del bucle foreach.

Certifiers es el ItemsSource para un ComboBox y UsersID es el SelectedIndex.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar relacionado con la propiedad UsersID que está vinculada al SelectedIndex del combobox, y dado que la colección se agrega en una tarea separada, la vinculación podría no estar correctamente inicializada cuando se agrega el primer elemento a la colección. Una forma potencial de solucionarlo es agregar primero todos los elementos a la colección Certifiers y luego establecer la propiedad UsersID con el valor del objeto del modelo. Podría verse así:

    public async void Initialize(object queryObject)
    {
        Model = (InspectionModel)queryObject;
        var users = await Task.Run(App.Repository.Users.GetCertifiersAsync);
    
        foreach (var item in users)
        {
            Certifiers.Add(item);
        }
    
        UsersID = Model.UsersID;
    }
    

    Esto asegura que la colección Certifiers esté totalmente inicializada antes de establecer la propiedad UsersID con el valor correcto del modelo.

Comments are closed.